Bug #313627. Make win32 theme's handling of toolbars, handleboxes, and
authorDom Lachowicz <cinamod@hotmail.com>
Sat, 12 Nov 2005 14:20:51 +0000 (14:20 +0000)
committerDom Lachowicz <doml@src.gnome.org>
Sat, 12 Nov 2005 14:20:51 +0000 (14:20 +0000)
2005-11-12  Dom Lachowicz <cinamod@hotmail.com>

* modules/engines/ms-windows/msw_style.c: Bug #313627. Make win32
theme's handling of toolbars, handleboxes, and menubars more in-line
with Microsoft's IE style.
* modules/engines/ms-windows/*.c: Indentation cleanups

ChangeLog
ChangeLog.pre-2-10
modules/engines/ms-windows/msw_rc_style.c
modules/engines/ms-windows/msw_style.c
modules/engines/ms-windows/msw_theme_main.c
modules/engines/ms-windows/xp_theme.c

index 6e6e623f947ef34afdc03a311138eaed22695f12..de8101264f9c3081839f36f76a3179e6e97c76d2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-11-12  Dom Lachowicz <cinamod@hotmail.com>
+
+       * modules/engines/ms-windows/msw_style.c: Bug #313627. Make win32 
+       theme's handling of toolbars, handleboxes, and menubars more in-line
+       with Microsoft's IE style.
+       * modules/engines/ms-windows/*.c: Indentation cleanups
+       
 2005-11-12  Matthias Clasen  <mclasen@redhat.com>
 
        Make builtin icons work in gtk_window_set_icon_name() 
index 6e6e623f947ef34afdc03a311138eaed22695f12..de8101264f9c3081839f36f76a3179e6e97c76d2 100644 (file)
@@ -1,3 +1,10 @@
+2005-11-12  Dom Lachowicz <cinamod@hotmail.com>
+
+       * modules/engines/ms-windows/msw_style.c: Bug #313627. Make win32 
+       theme's handling of toolbars, handleboxes, and menubars more in-line
+       with Microsoft's IE style.
+       * modules/engines/ms-windows/*.c: Indentation cleanups
+       
 2005-11-12  Matthias Clasen  <mclasen@redhat.com>
 
        Make builtin icons work in gtk_window_set_icon_name() 
index a6b6a90ef4a25adbfcfa32f9fe0cfd05bbadd20f..6b9b68c38fa636cc76cd0bf8a68cbf66d160173b 100755 (executable)
@@ -1,78 +1,76 @@
-/* MS-Windows Engine (aka GTK-Wimp)\r
- *\r
- * Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com>\r
- * Includes code adapted from redmond95 by Owen Taylor, and\r
- * gtk-nativewin by Evan Martin\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Library General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Library General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Library General Public\r
- * License along with this library; if not, write to the\r
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r
- * Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#include "msw_style.h"\r
-#include "msw_rc_style.h"\r
-\r
-static void      msw_rc_style_init         (MswRcStyle      *style);\r
-static void      msw_rc_style_class_init   (MswRcStyleClass *klass);\r
-static GtkStyle *msw_rc_style_create_style (GtkRcStyle         *rc_style);\r
-\r
-static GtkRcStyleClass *parent_class;\r
-\r
-GType msw_type_rc_style = 0;\r
-\r
-void\r
-msw_rc_style_register_type (GTypeModule *module)\r
-{\r
-  static const GTypeInfo object_info =\r
-  {\r
-    sizeof (MswRcStyleClass),\r
-    (GBaseInitFunc) NULL,\r
-    (GBaseFinalizeFunc) NULL,\r
-    (GClassInitFunc) msw_rc_style_class_init,\r
-    NULL,           /* class_finalize */\r
-    NULL,           /* class_data */\r
-    sizeof (MswRcStyle),\r
-    0,              /* n_preallocs */\r
-    (GInstanceInitFunc) msw_rc_style_init,\r
-  };\r
-  \r
-  msw_type_rc_style = g_type_module_register_type (module,\r
-                                                     GTK_TYPE_RC_STYLE,\r
-                                                     "MswRcStyle",\r
-                                                     &object_info, 0);\r
-}\r
-\r
-static void\r
-msw_rc_style_init (MswRcStyle *style)\r
-{\r
-}\r
-\r
-static void\r
-msw_rc_style_class_init (MswRcStyleClass *klass)\r
-{\r
-  GtkRcStyleClass *rc_style_class = GTK_RC_STYLE_CLASS (klass);\r
-\r
-  parent_class = g_type_class_peek_parent (klass);\r
-\r
-  rc_style_class->create_style = msw_rc_style_create_style;\r
-}\r
-\r
-/* Create an empty style suitable to this RC style\r
- */\r
-static GtkStyle *\r
-msw_rc_style_create_style (GtkRcStyle *rc_style)\r
-{\r
-  return g_object_new (MSW_TYPE_STYLE, NULL);\r
-}\r
-\r
+/* MS-Windows Engine (aka GTK-Wimp)
+ *
+ * Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com>
+ * Includes code adapted from redmond95 by Owen Taylor, and
+ * gtk-nativewin by Evan Martin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "msw_style.h"
+#include "msw_rc_style.h"
+
+static void msw_rc_style_init (MswRcStyle * style);
+static void msw_rc_style_class_init (MswRcStyleClass * klass);
+static GtkStyle *msw_rc_style_create_style (GtkRcStyle * rc_style);
+
+static GtkRcStyleClass *parent_class;
+
+GType msw_type_rc_style = 0;
+
+void
+msw_rc_style_register_type (GTypeModule * module)
+{
+    static const GTypeInfo object_info = {
+       sizeof (MswRcStyleClass),
+       (GBaseInitFunc) NULL,
+       (GBaseFinalizeFunc) NULL,
+       (GClassInitFunc) msw_rc_style_class_init,
+       NULL,                   /* class_finalize */
+       NULL,                   /* class_data */
+       sizeof (MswRcStyle),
+       0,                      /* n_preallocs */
+       (GInstanceInitFunc) msw_rc_style_init,
+    };
+
+    msw_type_rc_style = g_type_module_register_type (module,
+                                                    GTK_TYPE_RC_STYLE,
+                                                    "MswRcStyle",
+                                                    &object_info, 0);
+}
+
+static void
+msw_rc_style_init (MswRcStyle * style)
+{
+}
+
+static void
+msw_rc_style_class_init (MswRcStyleClass * klass)
+{
+    GtkRcStyleClass *rc_style_class = GTK_RC_STYLE_CLASS (klass);
+
+    parent_class = g_type_class_peek_parent (klass);
+
+    rc_style_class->create_style = msw_rc_style_create_style;
+}
+
+/* Create an empty style suitable to this RC style
+ */
+static GtkStyle *
+msw_rc_style_create_style (GtkRcStyle * rc_style)
+{
+    return g_object_new (MSW_TYPE_STYLE, NULL);
+}
index 35eb3160f17474fd77a01bd8e85a904a171f3ca6..d8e9396aa6a0b0d482d77bba72853cae1c71d50b 100755 (executable)
@@ -39,6 +39,7 @@
 #include "gtk/gtk.h"
 #include "gtk/gtk.h"
 /* #include <gdk/gdkwin32.h> */
+
 #include "gdk/win32/gdkwin32.h"
 
 
@@ -49,112 +50,143 @@ static const GtkBorder default_option_indicator_spacing = { 7, 5, 2, 2 };
 
 static GtkStyleClass *parent_class;
 
-typedef enum {
-  CHECK_AA,
-  CHECK_BASE,
-  CHECK_BLACK,
-  CHECK_DARK,
-  CHECK_LIGHT,
-  CHECK_MID,
-  CHECK_TEXT,
-  RADIO_BASE,
-  RADIO_BLACK,
-  RADIO_DARK,
-  RADIO_LIGHT,
-  RADIO_MID,
-  RADIO_TEXT
+typedef enum
+{
+    CHECK_AA,
+    CHECK_BASE,
+    CHECK_BLACK,
+    CHECK_DARK,
+    CHECK_LIGHT,
+    CHECK_MID,
+    CHECK_TEXT,
+    RADIO_BASE,
+    RADIO_BLACK,
+    RADIO_DARK,
+    RADIO_LIGHT,
+    RADIO_MID,
+    RADIO_TEXT
 } Part;
 
 #define PART_SIZE 13
 
 static const guint8 check_aa_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
 static const guint8 check_base_bits[] = {
- 0x00,0x00,0x00,0x00,0xfc,0x07,0xfc,0x07,0xfc,0x07,0xfc,0x07,0xfc,0x07,0xfc,
- 0x07,0xfc,0x07,0xfc,0x07,0xfc,0x07,0x00,0x00,0x00,0x00};
+    0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0x07, 0xfc, 0x07, 0xfc, 0x07,
+    0xfc, 0x07, 0xfc,
+    0x07, 0xfc, 0x07, 0xfc, 0x07, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00
+};
 static const guint8 check_black_bits[] = {
- 0x00,0x00,0xfe,0x0f,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,
- 0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00};
+    0x00, 0x00, 0xfe, 0x0f, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00,
+    0x02, 0x00, 0x02,
+    0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00
+};
 static const guint8 check_dark_bits[] = {
- 0xff,0x1f,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
- 0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00};
+    0xff, 0x1f, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
+    0x01, 0x00, 0x01,
+    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
+};
 static const guint8 check_light_bits[] = {
- 0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
- 0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xfe,0x1f};
+    0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10,
+    0x00, 0x10, 0x00,
+    0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xfe, 0x1f
+};
 static const guint8 check_mid_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,
- 0x08,0x00,0x08,0x00,0x08,0x00,0x08,0xfc,0x0f,0x00,0x00};
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08,
+    0x00, 0x08, 0x00,
+    0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0xfc, 0x0f, 0x00, 0x00
+};
 static const guint8 check_text_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x03,0x88,0x03,0xd8,0x01,0xf8,
- 0x00,0x70,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x88, 0x03,
+    0xd8, 0x01, 0xf8,
+    0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
 static const guint8 radio_base_bits[] = {
- 0x00,0x00,0x00,0x00,0xf0,0x01,0xf8,0x03,0xfc,0x07,0xfc,0x07,0xfc,0x07,0xfc,
- 0x07,0xfc,0x07,0xf8,0x03,0xf0,0x01,0x00,0x00,0x00,0x00};
+    0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xf8, 0x03, 0xfc, 0x07, 0xfc, 0x07,
+    0xfc, 0x07, 0xfc,
+    0x07, 0xfc, 0x07, 0xf8, 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00
+};
 static const guint8 radio_black_bits[] = {
- 0x00,0x00,0xf0,0x01,0x0c,0x02,0x04,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,
- 0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+    0x00, 0x00, 0xf0, 0x01, 0x0c, 0x02, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00,
+    0x02, 0x00, 0x02,
+    0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
 static const guint8 radio_dark_bits[] = {
- 0xf0,0x01,0x0c,0x06,0x02,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
- 0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00};
+    0xf0, 0x01, 0x0c, 0x06, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
+    0x01, 0x00, 0x01,
+    0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
+};
 static const guint8 radio_light_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
- 0x10,0x00,0x10,0x00,0x08,0x00,0x08,0x0c,0x06,0xf0,0x01};
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10,
+    0x00, 0x10, 0x00,
+    0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x0c, 0x06, 0xf0, 0x01
+};
 static const guint8 radio_mid_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x08,0x00,
- 0x08,0x00,0x08,0x00,0x04,0x0c,0x06,0xf0,0x01,0x00,0x00};
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08,
+    0x00, 0x08, 0x00,
+    0x08, 0x00, 0x08, 0x00, 0x04, 0x0c, 0x06, 0xf0, 0x01, 0x00, 0x00
+};
 static const guint8 radio_text_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0xf0,0x01,0xf0,0x01,0xf0,
- 0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
-
-static struct {
-  const guint8 *bits;
-  GdkBitmap  *bmap;
-} parts[] = {
-  { check_aa_bits, NULL },
-  { check_base_bits, NULL },
-  { check_black_bits, NULL },
-  { check_dark_bits, NULL },
-  { check_light_bits, NULL },
-  { check_mid_bits, NULL },
-  { check_text_bits, NULL },
-  { radio_base_bits, NULL },
-  { radio_black_bits, NULL },
-  { radio_dark_bits, NULL },
-  { radio_light_bits, NULL },
-  { radio_mid_bits, NULL },
-  { radio_text_bits, NULL }
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xf0, 0x01,
+    0xf0, 0x01, 0xf0,
+    0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static struct
+{
+    const guint8 *bits;
+    GdkBitmap *bmap;
+} parts[] =
+{
+    {check_aa_bits, NULL},
+    {check_base_bits, NULL},
+    {check_black_bits, NULL},
+    {check_dark_bits, NULL},
+    {check_light_bits, NULL},
+    {check_mid_bits, NULL},
+    {check_text_bits, NULL},
+    {radio_base_bits, NULL},
+    {radio_black_bits, NULL},
+    {radio_dark_bits, NULL},
+    {radio_light_bits, NULL},
+    {radio_mid_bits, NULL},
+    {radio_text_bits, NULL}
 };
 
 static gboolean
-get_system_font(XpThemeClass klazz, XpThemeFont type, LOGFONT *out_lf)
+get_system_font (XpThemeClass klazz, XpThemeFont type, LOGFONT * out_lf)
 {
 #if 0
-  /* TODO: this causes crashes later because the font name is in UCS2, and the pango fns don't deal with that gracefully */
-  if (xp_theme_get_system_font(klazz, type, out_lf))
-    return TRUE;
-  else
+    /* TODO: this causes crashes later because the font name is in UCS2, and
+       the pango fns don't deal with that gracefully */
+    if (xp_theme_get_system_font (klazz, type, out_lf))
+       return TRUE;
+    else
 #endif
-  {
-         NONCLIENTMETRICS ncm;
-         ncm.cbSize = sizeof(NONCLIENTMETRICS);
-
-         if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
-                                  sizeof(NONCLIENTMETRICS), &ncm, 0))
-           {
-             if (type == XP_THEME_FONT_CAPTION)
-               *out_lf = ncm.lfCaptionFont;
-             else if (type == XP_THEME_FONT_MENU)
-               *out_lf = ncm.lfMenuFont;
-             else if (type == XP_THEME_FONT_STATUS)
-               *out_lf = ncm.lfStatusFont;
-             else
-               *out_lf = ncm.lfMessageFont;
-
-             return TRUE;
-           }
-  }
-  return FALSE;
+       {
+           NONCLIENTMETRICS ncm;
+
+           ncm.cbSize = sizeof (NONCLIENTMETRICS);
+
+           if (SystemParametersInfo (SPI_GETNONCLIENTMETRICS,
+                                     sizeof (NONCLIENTMETRICS), &ncm, 0))
+               {
+                   if (type == XP_THEME_FONT_CAPTION)
+                       *out_lf = ncm.lfCaptionFont;
+                   else if (type == XP_THEME_FONT_MENU)
+                       *out_lf = ncm.lfMenuFont;
+                   else if (type == XP_THEME_FONT_STATUS)
+                       *out_lf = ncm.lfStatusFont;
+                   else
+                       *out_lf = ncm.lfMessageFont;
+
+                   return TRUE;
+               }
+       }
+    return FALSE;
 }
 
 /***************************** BEGIN STOLEN FROM PANGO *****************************/
@@ -194,244 +226,251 @@ get_system_font(XpThemeClass klazz, XpThemeFont type, LOGFONT *out_lf)
 
 struct name_header
 {
-  guint16 format_selector;
-  guint16 num_records;
-  guint16 string_storage_offset;
+    guint16 format_selector;
+    guint16 num_records;
+    guint16 string_storage_offset;
 };
 
 struct name_record
 {
-  guint16 platform_id;
-  guint16 encoding_id;
-  guint16 language_id;
-  guint16 name_id;
-  guint16 string_length;
-  guint16 string_offset;
+    guint16 platform_id;
+    guint16 encoding_id;
+    guint16 language_id;
+    guint16 name_id;
+    guint16 string_length;
+    guint16 string_offset;
 };
 
 static gboolean
-pango_win32_get_name_header (HDC                 hdc,
-                            struct name_header *header)
+pango_win32_get_name_header (HDC hdc, struct name_header *header)
 {
-  if (GetFontData (hdc, NAME, 0, header, sizeof (*header)) != sizeof (*header))
-    return FALSE;
+    if (GetFontData (hdc, NAME, 0, header, sizeof (*header)) !=
+       sizeof (*header))
+       return FALSE;
 
-  header->num_records = GUINT16_FROM_BE (header->num_records);
-  header->string_storage_offset = GUINT16_FROM_BE (header->string_storage_offset);
+    header->num_records = GUINT16_FROM_BE (header->num_records);
+    header->string_storage_offset =
+       GUINT16_FROM_BE (header->string_storage_offset);
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-pango_win32_get_name_record (HDC                 hdc,
-                            gint                i,
-                            struct name_record *record)
+pango_win32_get_name_record (HDC hdc, gint i, struct name_record *record)
 {
-  if (GetFontData (hdc, NAME, 6 + i * sizeof (*record),
-                  record, sizeof (*record)) != sizeof (*record))
-    return FALSE;
+    if (GetFontData (hdc, NAME, 6 + i * sizeof (*record),
+                    record, sizeof (*record)) != sizeof (*record))
+       return FALSE;
 
-  record->platform_id = GUINT16_FROM_BE (record->platform_id);
-  record->encoding_id = GUINT16_FROM_BE (record->encoding_id);
-  record->language_id = GUINT16_FROM_BE (record->language_id);
-  record->name_id = GUINT16_FROM_BE (record->name_id);
-  record->string_length = GUINT16_FROM_BE (record->string_length);
-  record->string_offset = GUINT16_FROM_BE (record->string_offset);
+    record->platform_id = GUINT16_FROM_BE (record->platform_id);
+    record->encoding_id = GUINT16_FROM_BE (record->encoding_id);
+    record->language_id = GUINT16_FROM_BE (record->language_id);
+    record->name_id = GUINT16_FROM_BE (record->name_id);
+    record->string_length = GUINT16_FROM_BE (record->string_length);
+    record->string_offset = GUINT16_FROM_BE (record->string_offset);
 
-  return TRUE;
+    return TRUE;
 }
 
 static gchar *
-get_family_name (LOGFONT *lfp, HDC pango_win32_hdc)
+get_family_name (LOGFONT * lfp, HDC pango_win32_hdc)
 {
-  HFONT hfont;
-  HFONT oldhfont;
+    HFONT hfont;
+    HFONT oldhfont;
 
-  struct name_header header;
-  struct name_record record;
+    struct name_header header;
+    struct name_record record;
 
-  gint unicode_ix = -1, mac_ix = -1, microsoft_ix = -1;
-  gint name_ix;
-  gchar *codeset;
+    gint unicode_ix = -1, mac_ix = -1, microsoft_ix = -1;
+    gint name_ix;
+    gchar *codeset;
 
-  gchar *string = NULL;
-  gchar *name;
+    gchar *string = NULL;
+    gchar *name;
 
-  size_t i, l, nbytes;
+    size_t i, l, nbytes;
 
-  /* If lfFaceName is ASCII, assume it is the common (English) name
-   * for the font. Is this valid? Do some TrueType fonts have
-   * different names in French, German, etc, and does the system
-   * return these if the locale is set to use French, German, etc?
-   */
-  l = strlen (lfp->lfFaceName);
-  for (i = 0; i < l; i++)
-    if (lfp->lfFaceName[i] < ' ' || lfp->lfFaceName[i] > '~')
-      break;
+    /* If lfFaceName is ASCII, assume it is the common (English) name for the 
+       font. Is this valid? Do some TrueType fonts have different names in
+       French, German, etc, and does the system return these if the locale is 
+       set to use French, German, etc? */
+    l = strlen (lfp->lfFaceName);
+    for (i = 0; i < l; i++)
+       if (lfp->lfFaceName[i] < ' ' || lfp->lfFaceName[i] > '~')
+           break;
 
-  if (i == l)
-    return g_strdup (lfp->lfFaceName);
+    if (i == l)
+       return g_strdup (lfp->lfFaceName);
 
-  if ((hfont = CreateFontIndirect (lfp)) == NULL)
-    goto fail0;
+    if ((hfont = CreateFontIndirect (lfp)) == NULL)
+       goto fail0;
 
-  if ((oldhfont = (HFONT)SelectObject (pango_win32_hdc, hfont)) == NULL)
-    goto fail1;
+    if ((oldhfont = (HFONT) SelectObject (pango_win32_hdc, hfont)) == NULL)
+       goto fail1;
 
-  if (!pango_win32_get_name_header (pango_win32_hdc, &header))
-    goto fail2;
+    if (!pango_win32_get_name_header (pango_win32_hdc, &header))
+       goto fail2;
 
-  PING (("%d name records", header.num_records));
+    PING (("%d name records", header.num_records));
 
-  for (i = 0; i < header.num_records; i++)
-    {
-      if (!pango_win32_get_name_record (pango_win32_hdc, i, &record))
-       goto fail2;
+    for (i = 0; i < header.num_records; i++)
+       {
+           if (!pango_win32_get_name_record (pango_win32_hdc, i, &record))
+               goto fail2;
+
+           if ((record.name_id != 1 && record.name_id != 16)
+               || record.string_length <= 0)
+               continue;
+
+           PING (("platform:%d encoding:%d language:%04x name_id:%d",
+                  record.platform_id, record.encoding_id, record.language_id,
+                  record.name_id));
+
+           if (record.platform_id == APPLE_UNICODE_PLATFORM_ID ||
+               record.platform_id == ISO_PLATFORM_ID)
+               unicode_ix = i;
+           else if (record.platform_id == MACINTOSH_PLATFORM_ID && record.encoding_id == 0 &&  /* Roman 
+                                                                                                */
+                    record.language_id == 0)   /* English */
+               mac_ix = i;
+           else if (record.platform_id == MICROSOFT_PLATFORM_ID)
+               if ((microsoft_ix == -1 ||
+                    PRIMARYLANGID (record.language_id) == LANG_ENGLISH) &&
+                   (record.encoding_id == SYMBOL_ENCODING_ID ||
+                    record.encoding_id == UNICODE_ENCODING_ID ||
+                    record.encoding_id == UCS4_ENCODING_ID))
+                   microsoft_ix = i;
+       }
 
-      if ((record.name_id != 1 && record.name_id != 16) || record.string_length <= 0)
-       continue;
-
-      PING(("platform:%d encoding:%d language:%04x name_id:%d",
-           record.platform_id, record.encoding_id, record.language_id, record.name_id));
-
-      if (record.platform_id == APPLE_UNICODE_PLATFORM_ID ||
-         record.platform_id == ISO_PLATFORM_ID)
-       unicode_ix = i;
-      else if (record.platform_id == MACINTOSH_PLATFORM_ID &&
-              record.encoding_id == 0 && /* Roman */
-              record.language_id == 0) /* English */
-       mac_ix = i;
-      else if (record.platform_id == MICROSOFT_PLATFORM_ID)
-       if ((microsoft_ix == -1 ||
-            PRIMARYLANGID (record.language_id) == LANG_ENGLISH) &&
-           (record.encoding_id == SYMBOL_ENCODING_ID ||
-            record.encoding_id == UNICODE_ENCODING_ID ||
-            record.encoding_id == UCS4_ENCODING_ID))
-         microsoft_ix = i;
-    }
-
-  if (microsoft_ix >= 0)
-    name_ix = microsoft_ix;
-  else if (mac_ix >= 0)
-    name_ix = mac_ix;
-  else if (unicode_ix >= 0)
-    name_ix = unicode_ix;
-  else
-    goto fail2;
-
-  if (!pango_win32_get_name_record (pango_win32_hdc, name_ix, &record))
-    goto fail2;
-
-  string = g_malloc (record.string_length + 1);
-  if (GetFontData (pango_win32_hdc, NAME,
-                  header.string_storage_offset + record.string_offset,
-                  string, record.string_length) != record.string_length)
-    goto fail2;
-
-  string[record.string_length] = '\0';
-
-  if (name_ix == microsoft_ix)
-    if (record.encoding_id == SYMBOL_ENCODING_ID ||
-       record.encoding_id == UNICODE_ENCODING_ID)
-      codeset = "UTF-16BE";
+    if (microsoft_ix >= 0)
+       name_ix = microsoft_ix;
+    else if (mac_ix >= 0)
+       name_ix = mac_ix;
+    else if (unicode_ix >= 0)
+       name_ix = unicode_ix;
     else
-      codeset = "UCS-4BE";
-  else if (name_ix == mac_ix)
-    codeset = "MacRoman";
-  else /* name_ix == unicode_ix */
-    codeset = "UCS-4BE";
+       goto fail2;
 
-  name = g_convert (string, record.string_length, "UTF-8", codeset, NULL, &nbytes, NULL);
-  if (name == NULL)
-    goto fail2;
-  g_free (string);
+    if (!pango_win32_get_name_record (pango_win32_hdc, name_ix, &record))
+       goto fail2;
+
+    string = g_malloc (record.string_length + 1);
+    if (GetFontData (pango_win32_hdc, NAME,
+                    header.string_storage_offset + record.string_offset,
+                    string, record.string_length) != record.string_length)
+       goto fail2;
+
+    string[record.string_length] = '\0';
+
+    if (name_ix == microsoft_ix)
+       if (record.encoding_id == SYMBOL_ENCODING_ID ||
+           record.encoding_id == UNICODE_ENCODING_ID)
+           codeset = "UTF-16BE";
+       else
+           codeset = "UCS-4BE";
+    else if (name_ix == mac_ix)
+       codeset = "MacRoman";
+    else                       /* name_ix == unicode_ix */
+       codeset = "UCS-4BE";
+
+    name =
+       g_convert (string, record.string_length, "UTF-8", codeset, NULL,
+                  &nbytes, NULL);
+    if (name == NULL)
+       goto fail2;
+    g_free (string);
 
-  PING(("%s", name));
+    PING (("%s", name));
 
-  SelectObject (pango_win32_hdc, oldhfont);
-  DeleteObject (hfont);
+    SelectObject (pango_win32_hdc, oldhfont);
+    DeleteObject (hfont);
 
-  return name;
+    return name;
 
- fail2:
-  g_free (string);
-  SelectObject (pango_win32_hdc, oldhfont);
 fail2:
+    g_free (string);
+    SelectObject (pango_win32_hdc, oldhfont);
 
- fail1:
-  DeleteObject (hfont);
 fail1:
+    DeleteObject (hfont);
 
- fail0:
-  return g_locale_to_utf8 (lfp->lfFaceName, -1, NULL, NULL, NULL);
 fail0:
+    return g_locale_to_utf8 (lfp->lfFaceName, -1, NULL, NULL, NULL);
 }
 
 /***************************** END STOLEN FROM PANGO *****************************/
 
 static char *
-sys_font_to_pango_font (XpThemeClass klazz, XpThemeFont type, char * buf, size_t bufsiz)
+sys_font_to_pango_font (XpThemeClass klazz, XpThemeFont type, char *buf,
+                       size_t bufsiz)
 {
-  HDC hDC;
-  HWND hwnd;
-  LOGFONT lf;
-  int pt_size;
-  const char * weight;
-  const char * style;
-  char * font;
-
-  if (get_system_font(klazz, type, &lf))
-    {
-      switch (lf.lfWeight) {
-      case FW_THIN:
-      case FW_EXTRALIGHT:
-       weight = "Ultra-Light";
-       break;
-
-      case FW_LIGHT:
-       weight = "Light";
-       break;
-
-      case FW_BOLD:
-       weight = "Bold";
-       break;
-
-      case FW_SEMIBOLD:
-       weight = "Semi-Bold";
-       break;
-
-      case FW_ULTRABOLD:
-       weight = "Ultra-Bold";
-       break;
-
-      case FW_HEAVY:
-       weight = "Heavy";
-       break;
-
-      default:
-       weight = "";
-       break;
-      }
-
-      if (lf.lfItalic)
-       style="Italic";
-      else
-       style="";
-
-       hwnd = GetDesktopWindow();
-       hDC = GetDC(hwnd);
-       if (hDC) {
-               pt_size = -MulDiv(lf.lfHeight, 72,
-                             GetDeviceCaps(hDC,LOGPIXELSY));
-               ReleaseDC(hwnd, hDC);
-       } else
+    HDC hDC;
+    HWND hwnd;
+    LOGFONT lf;
+    int pt_size;
+    const char *weight;
+    const char *style;
+    char *font;
+
+    if (get_system_font (klazz, type, &lf))
+       {
+           switch (lf.lfWeight)
+               {
+               case FW_THIN:
+               case FW_EXTRALIGHT:
+                   weight = "Ultra-Light";
+                   break;
+
+               case FW_LIGHT:
+                   weight = "Light";
+                   break;
+
+               case FW_BOLD:
+                   weight = "Bold";
+                   break;
+
+               case FW_SEMIBOLD:
+                   weight = "Semi-Bold";
+                   break;
+
+               case FW_ULTRABOLD:
+                   weight = "Ultra-Bold";
+                   break;
+
+               case FW_HEAVY:
+                   weight = "Heavy";
+                   break;
+
+               default:
+                   weight = "";
+                   break;
+               }
+
+           if (lf.lfItalic)
+               style = "Italic";
+           else
+               style = "";
+
+           hwnd = GetDesktopWindow ();
+           hDC = GetDC (hwnd);
+           if (hDC)
+               {
+                   pt_size = -MulDiv (lf.lfHeight, 72,
+                                      GetDeviceCaps (hDC, LOGPIXELSY));
+                   ReleaseDC (hwnd, hDC);
+               }
+           else
                pt_size = 10;
 
-       font = get_family_name(&lf, hDC);
-    g_snprintf(buf, bufsiz, "%s %s %s %d", font, style, weight, pt_size);
-       g_free(font);
+           font = get_family_name (&lf, hDC);
+           g_snprintf (buf, bufsiz, "%s %s %s %d", font, style, weight,
+                       pt_size);
+           g_free (font);
 
-    return buf;
-   }
+           return buf;
+       }
 
-  return NULL;
+    return NULL;
 }
 
 /* missing from ms's header files */
@@ -447,702 +486,729 @@ sys_font_to_pango_font (XpThemeClass klazz, XpThemeFont type, char * buf, size_t
 static void
 setup_menu_settings (GtkSettings * settings)
 {
-  int menu_delay;
-  gboolean win95 = FALSE;
-  OSVERSIONINFOEX osvi;
-  GObjectClass * klazz = G_OBJECT_GET_CLASS(G_OBJECT(settings));
-
-  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
-  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
-
-  if (!GetVersionEx ( (OSVERSIONINFO *) &osvi))
-    win95 = TRUE; /* assume the worst */
-
-  if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
-    if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
-      win95 = TRUE;
-
-  if (!win95) {
-    if (SystemParametersInfo (SPI_GETMENUSHOWDELAY, 0, &menu_delay, 0)) {
-      if (klazz) {
-       if (g_object_class_find_property (klazz, "gtk-menu-bar-popup-delay")) {
-         g_object_set (settings, "gtk-menu-bar-popup-delay", 0, NULL);
-       }
-       if (g_object_class_find_property (klazz, "gtk-menu-popup-delay")) {
-         g_object_set (settings, "gtk-menu-popup-delay", menu_delay, NULL);
-       }
-       if (g_object_class_find_property (klazz, "gtk-menu-popdown-delay")) {
-         g_object_set (settings, "gtk-menu-popdown-delay", menu_delay, NULL);
+    int menu_delay;
+    gboolean win95 = FALSE;
+    OSVERSIONINFOEX osvi;
+    GObjectClass *klazz = G_OBJECT_GET_CLASS (G_OBJECT (settings));
+
+    ZeroMemory (&osvi, sizeof (OSVERSIONINFOEX));
+    osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX);
+
+    if (!GetVersionEx ((OSVERSIONINFO *) & osvi))
+       win95 = TRUE;           /* assume the worst */
+
+    if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
+       if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
+           win95 = TRUE;
+
+    if (!win95)
+       {
+           if (SystemParametersInfo
+               (SPI_GETMENUSHOWDELAY, 0, &menu_delay, 0))
+               {
+                   if (klazz)
+                       {
+                           if (g_object_class_find_property
+                               (klazz, "gtk-menu-bar-popup-delay"))
+                               {
+                                   g_object_set (settings,
+                                                 "gtk-menu-bar-popup-delay",
+                                                 0, NULL);
+                               }
+                           if (g_object_class_find_property
+                               (klazz, "gtk-menu-popup-delay"))
+                               {
+                                   g_object_set (settings,
+                                                 "gtk-menu-popup-delay",
+                                                 menu_delay, NULL);
+                               }
+                           if (g_object_class_find_property
+                               (klazz, "gtk-menu-popdown-delay"))
+                               {
+                                   g_object_set (settings,
+                                                 "gtk-menu-popdown-delay",
+                                                 menu_delay, NULL);
+                               }
+                       }
+               }
        }
-      }
-    }
-  }
 }
 
 void
 msw_style_setup_system_settings (void)
 {
-  GtkSettings * settings;
-  int cursor_blink_time;
+    GtkSettings *settings;
+    int cursor_blink_time;
 
-  settings = gtk_settings_get_default ();
-  if (!settings)
-    return;
+    settings = gtk_settings_get_default ();
+    if (!settings)
+       return;
 
-  cursor_blink_time = GetCaretBlinkTime ();
-  g_object_set (settings, "gtk-cursor-blink", cursor_blink_time > 0, NULL);
+    cursor_blink_time = GetCaretBlinkTime ();
+    g_object_set (settings, "gtk-cursor-blink", cursor_blink_time > 0, NULL);
 
-  if (cursor_blink_time > 0)
-       g_object_set (settings, "gtk-cursor-blink-time", 2*cursor_blink_time,
-                     NULL);
+    if (cursor_blink_time > 0)
+       g_object_set (settings, "gtk-cursor-blink-time",
+                     2 * cursor_blink_time, NULL);
 
-  g_object_set (settings, "gtk-double-click-distance", GetSystemMetrics(SM_CXDOUBLECLK), NULL);
-  g_object_set (settings, "gtk-double-click-time", GetDoubleClickTime(), NULL);
-  g_object_set (settings, "gtk-dnd-drag-threshold", GetSystemMetrics(SM_CXDRAG), NULL);
+    g_object_set (settings, "gtk-double-click-distance",
+                 GetSystemMetrics (SM_CXDOUBLECLK), NULL);
+    g_object_set (settings, "gtk-double-click-time", GetDoubleClickTime (),
+                 NULL);
+    g_object_set (settings, "gtk-dnd-drag-threshold",
+                 GetSystemMetrics (SM_CXDRAG), NULL);
 
-  setup_menu_settings (settings);
+    setup_menu_settings (settings);
 
-  /*
-     http://developer.gnome.org/doc/API/2.0/gtk/GtkSettings.html
-     http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp
-     http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemmetrics.asp
-  */
+    /* 
+       http://developer.gnome.org/doc/API/2.0/gtk/GtkSettings.html
+       http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp
+       http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemmetrics.asp */
 }
 
 static void
-setup_system_font(GtkStyle *style)
+setup_system_font (GtkStyle * style)
 {
-  char buf[256], * font; /* It's okay, lfFaceName is smaller than 32 chars */
+    char buf[256], *font;      /* It's okay, lfFaceName is smaller than 32
+                                  chars */
 
-  if ((font = sys_font_to_pango_font(XP_THEME_CLASS_TEXT,
-                                     XP_THEME_FONT_MESSAGE,
-                                     buf, sizeof (buf))) != NULL)
-    {
-      if (style->font_desc)
-       pango_font_description_free (style->font_desc);
+    if ((font = sys_font_to_pango_font (XP_THEME_CLASS_TEXT,
+                                       XP_THEME_FONT_MESSAGE,
+                                       buf, sizeof (buf))) != NULL)
+       {
+           if (style->font_desc)
+               pango_font_description_free (style->font_desc);
 
-      style->font_desc = pango_font_description_from_string(font);
-    }
+           style->font_desc = pango_font_description_from_string (font);
+       }
 }
 
 static void
-sys_color_to_gtk_color(XpThemeClass klazz, int id, GdkColor *pcolor)
+sys_color_to_gtk_color (XpThemeClass klazz, int id, GdkColor * pcolor)
 {
-  DWORD color;
+    DWORD color;
 
-  if (!xp_theme_get_system_color (klazz, id, &color))
-       color = GetSysColor(id);
+    if (!xp_theme_get_system_color (klazz, id, &color))
+       color = GetSysColor (id);
 
-  pcolor->pixel = color;
-  pcolor->red   = (GetRValue(color) << 8) | GetRValue(color);
-  pcolor->green = (GetGValue(color) << 8) | GetGValue(color);
-  pcolor->blue  = (GetBValue(color) << 8) | GetBValue(color);
+    pcolor->pixel = color;
+    pcolor->red = (GetRValue (color) << 8) | GetRValue (color);
+    pcolor->green = (GetGValue (color) << 8) | GetGValue (color);
+    pcolor->blue = (GetBValue (color) << 8) | GetBValue (color);
 }
 
 static int
-get_system_metric(XpThemeClass klazz, int id)
+get_system_metric (XpThemeClass klazz, int id)
 {
-  int rval;
+    int rval;
 
-  if (!xp_theme_get_system_metric(klazz, id, &rval))
-    rval = GetSystemMetrics (id);
+    if (!xp_theme_get_system_metric (klazz, id, &rval))
+       rval = GetSystemMetrics (id);
 
-  return rval;
+    return rval;
 }
 
 static void
-setup_msw_rc_style(void)
+setup_msw_rc_style (void)
 {
-  char buf[1024], font_buf[256], *font_ptr;
-
-  GdkColor menu_color;
-  GdkColor menu_text_color;
-  GdkColor tooltip_back;
-  GdkColor tooltip_fore;
-  GdkColor btn_fore;
-  GdkColor btn_face;
-  GdkColor progress_back;
-
-  GdkColor fg_prelight;
-  GdkColor bg_prelight;
-  GdkColor base_prelight;
-  GdkColor text_prelight;
-
-  gboolean xp_theme = xp_theme_is_active();
-
-  /* Prelight */
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHTTEXT, &fg_prelight);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHT, &bg_prelight);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHT, &base_prelight);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHTTEXT, &text_prelight);
-
-  sys_color_to_gtk_color(XP_THEME_CLASS_MENU, COLOR_MENUTEXT, &menu_text_color);
-  sys_color_to_gtk_color(XP_THEME_CLASS_MENU, COLOR_MENU, &menu_color);
-
-  /* tooltips */
-  sys_color_to_gtk_color(XP_THEME_CLASS_TOOLTIP, COLOR_INFOTEXT, &tooltip_fore);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TOOLTIP, COLOR_INFOBK, &tooltip_back);
-
-  /* text on push buttons. TODO: button shadows, backgrounds, and highlights */
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON, COLOR_BTNTEXT, &btn_fore);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON, COLOR_BTNFACE, &btn_face);
-
-  /* progress bar background color */
-  sys_color_to_gtk_color(XP_THEME_CLASS_PROGRESS, COLOR_HIGHLIGHT, &progress_back);
-
-  /* Enable coloring for menus. */
-  font_ptr = sys_font_to_pango_font (XP_THEME_CLASS_MENU, XP_THEME_FONT_MENU,font_buf, sizeof (font_buf));
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-menu\" = \"msw-default\"\n"
-            "{\n"
-            "fg[PRELIGHT] = { %d, %d, %d }\n"
-            "bg[PRELIGHT] = { %d, %d, %d }\n"
-            "text[PRELIGHT] = { %d, %d, %d }\n"
-            "base[PRELIGHT] = { %d, %d, %d }\n"
-            "fg[NORMAL] = { %d, %d, %d }\n"
-            "bg[NORMAL] = { %d, %d, %d }\n"
-            "%s = \"%s\"\n"
-            "}widget_class \"*MenuItem*\" style \"msw-menu\"\n"
-            "widget_class \"*GtkMenu\" style \"msw-menu\"\n"
-            "widget_class \"*GtkMenuShell*\" style \"msw-menu\"\n",
-            fg_prelight.red,
-            fg_prelight.green,
-            fg_prelight.blue,
-            bg_prelight.red,
-            bg_prelight.green,
-            bg_prelight.blue,
-            text_prelight.red,
-            text_prelight.green,
-            text_prelight.blue,
-            base_prelight.red,
-            base_prelight.green,
-            base_prelight.blue,
-            menu_text_color.red,
-            menu_text_color.green,
-            menu_text_color.blue,
-            menu_color.red,
-            menu_color.green,
-            menu_color.blue,
-            (font_ptr ? "font_name" : "#"),
-            (font_ptr ? font_ptr : " font name should go here"));
-  gtk_rc_parse_string(buf);
-
-  /* Enable coloring for menu bars. */
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-menu-bar\" = \"msw-menu\"\n"
-            "{\n"
-            "bg[NORMAL] = { %d, %d, %d }\n"
-            "GtkMenuBar::shadow-type = %s\n"
-            "}widget_class \"*MenuBar*\" style \"msw-menu-bar\"\n",
-            btn_face.red,
-            btn_face.green,
-            btn_face.blue,
-            (xp_theme ? "etched-in" : "out"));
-  gtk_rc_parse_string(buf);
-
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-toolbar\" = \"msw-default\"\n"
-            "{\n"
-                "GtkHandleBox::shadow-type = %s\n"
-                "GtkToolbar::shadow-type = %s\n"
-            "}widget_class \"*HandleBox*\" style \"msw-toolbar\"\n",
-            (xp_theme ? "none" : "out"),
-            (xp_theme ? "none" : "out"));
-  gtk_rc_parse_string(buf);
-
-  /* enable tooltip fonts */
-  font_ptr = sys_font_to_pango_font (XP_THEME_CLASS_STATUS, XP_THEME_FONT_STATUS,font_buf, sizeof (font_buf));
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-tooltips-caption\" = \"msw-default\"\n"
-            "{fg[NORMAL] = { %d, %d, %d }\n"
-            "%s = \"%s\"\n"
-            "}widget \"gtk-tooltips.GtkLabel\" style \"msw-tooltips-caption\"\n",
-            tooltip_fore.red,
-            tooltip_fore.green,
-            tooltip_fore.blue,
-            (font_ptr ? "font_name" : "#"),
-            (font_ptr ? font_ptr : " font name should go here"));
-  gtk_rc_parse_string(buf);
-
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-tooltips\" = \"msw-default\"\n"
-            "{bg[NORMAL] = { %d, %d, %d }\n"
-            "}widget \"gtk-tooltips*\" style \"msw-tooltips\"\n",
-            tooltip_back.red,
-            tooltip_back.green,
-            tooltip_back.blue);
-  gtk_rc_parse_string(buf);
-
-  /* enable font theming for status bars */
-  font_ptr = sys_font_to_pango_font (XP_THEME_CLASS_STATUS, XP_THEME_FONT_STATUS,font_buf, sizeof (font_buf));
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-status\" = \"msw-default\"\n"
-            "{%s = \"%s\"\n"
-            "bg[NORMAL] = { %d, %d, %d }\n"
-            "}widget_class \"*Status*\" style \"msw-status\"\n",
-            (font_ptr ? "font_name" : "#"),
-            (font_ptr ? font_ptr : " font name should go here"),
-            btn_face.red, btn_face.green, btn_face.blue);
-  gtk_rc_parse_string(buf);
-
-  /* enable coloring for text on buttons
-     TODO: use GetThemeMetric for the border and outside border */
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-button\" = \"msw-default\"\n"
-            "{\n"
-            "bg[NORMAL] = { %d, %d, %d }\n"
-            "bg[PRELIGHT] = { %d, %d, %d }\n"
-            "bg[INSENSITIVE] = { %d, %d, %d }\n"
-            "fg[PRELIGHT] = { %d, %d, %d }\n"
-            "GtkButton::default-border = { 1, 1, 1, 1 }\n"
-            "GtkButton::default-outside-border = { 0, 0, 0, 0 }\n"
-            "GtkButton::child-displacement-x = 1\n"
-            "GtkButton::child-displacement-y = 1\n"
-            "}widget_class \"*Button*\" style \"msw-button\"\n",
-            btn_face.red, btn_face.green, btn_face.blue,
-            btn_face.red, btn_face.green, btn_face.blue,
-            btn_face.red, btn_face.green, btn_face.blue,
-            btn_fore.red, btn_fore.green, btn_fore.blue
-            );
-  gtk_rc_parse_string(buf);
-
-  /* enable coloring for progress bars */
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-progress\" = \"msw-default\"\n"
-            "{bg[PRELIGHT] = { %d, %d, %d }\n"
-            "bg[NORMAL] = { %d, %d, %d }\n"
-            "}widget_class \"*Progress*\" style \"msw-progress\"\n",
-            progress_back.red,
-            progress_back.green,
-            progress_back.blue,
-            btn_face.red, btn_face.green, btn_face.blue);
-  gtk_rc_parse_string(buf);
-
-  /* scrollbar thumb width and height */
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-vscrollbar\" = \"msw-default\"\n"
-            "{GtkRange::slider-width = %d\n"
-            "GtkRange::stepper-size = %d\n"
-            "GtkRange::stepper-spacing = 0\n"
-            "GtkRange::trough_border = 0\n"
-            "GtkScale::slider-length = %d\n"
-            "GtkScrollbar::min-slider-length = 8\n"
-            "}widget_class \"*VScrollbar*\" style \"msw-vscrollbar\"\n"
-            "widget_class \"*VScale*\" style \"msw-vscrollbar\"\n",
-            GetSystemMetrics(SM_CYVTHUMB),
-            get_system_metric(XP_THEME_CLASS_SCROLLBAR, SM_CXVSCROLL),
-            11);
-  gtk_rc_parse_string(buf);
-
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-hscrollbar\" = \"msw-default\"\n"
-            "{GtkRange::slider-width = %d\n"
-            "GtkRange::stepper-size = %d\n"
-            "GtkRange::stepper-spacing = 0\n"
-            "GtkRange::trough_border = 0\n"
-            "GtkScale::slider-length = %d\n"
-            "GtkScrollbar::min-slider-length = 8\n"
-            "}widget_class \"*HScrollbar*\" style \"msw-hscrollbar\"\n"
-            "widget_class \"*HScale*\" style \"msw-hscrollbar\"\n",
-            GetSystemMetrics(SM_CXHTHUMB),
-            get_system_metric(XP_THEME_CLASS_SCROLLBAR, SM_CYHSCROLL),
-            11);
-  gtk_rc_parse_string(buf);
-
-  /* radio/check button sizes */
-  g_snprintf(buf, sizeof (buf),
-            "style \"msw-checkbutton\" = \"msw-button\"\n"
-            "{GtkCheckButton::indicator-size = 13\n"
-            "}widget_class \"*CheckButton*\" style \"msw-checkbutton\"\n"
-            "widget_class \"*RadioButton*\" style \"msw-checkbutton\"\n");
-  gtk_rc_parse_string(buf);
+    char buf[1024], font_buf[256], *font_ptr;
+
+    GdkColor menu_color;
+    GdkColor menu_text_color;
+    GdkColor tooltip_back;
+    GdkColor tooltip_fore;
+    GdkColor btn_fore;
+    GdkColor btn_face;
+    GdkColor progress_back;
+
+    GdkColor fg_prelight;
+    GdkColor bg_prelight;
+    GdkColor base_prelight;
+    GdkColor text_prelight;
+
+    /* Prelight */
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHTTEXT,
+                           &fg_prelight);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHT,
+                           &bg_prelight);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHT,
+                           &base_prelight);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHTTEXT,
+                           &text_prelight);
+
+    sys_color_to_gtk_color (XP_THEME_CLASS_MENU, COLOR_MENUTEXT,
+                           &menu_text_color);
+    sys_color_to_gtk_color (XP_THEME_CLASS_MENU, COLOR_MENU, &menu_color);
+
+    /* tooltips */
+    sys_color_to_gtk_color (XP_THEME_CLASS_TOOLTIP, COLOR_INFOTEXT,
+                           &tooltip_fore);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TOOLTIP, COLOR_INFOBK,
+                           &tooltip_back);
+
+    /* text on push buttons. TODO: button shadows, backgrounds, and
+       highlights */
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNTEXT, &btn_fore);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNFACE, &btn_face);
+
+    /* progress bar background color */
+    sys_color_to_gtk_color (XP_THEME_CLASS_PROGRESS, COLOR_HIGHLIGHT,
+                           &progress_back);
+
+    /* Enable coloring for menus. */
+    font_ptr =
+       sys_font_to_pango_font (XP_THEME_CLASS_MENU, XP_THEME_FONT_MENU,
+                               font_buf, sizeof (font_buf));
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-menu\" = \"msw-default\"\n" "{\n"
+               "fg[PRELIGHT] = { %d, %d, %d }\n"
+               "bg[PRELIGHT] = { %d, %d, %d }\n"
+               "text[PRELIGHT] = { %d, %d, %d }\n"
+               "base[PRELIGHT] = { %d, %d, %d }\n"
+               "fg[NORMAL] = { %d, %d, %d }\n"
+               "bg[NORMAL] = { %d, %d, %d }\n" "%s = \"%s\"\n"
+               "}widget_class \"*MenuItem*\" style \"msw-menu\"\n"
+               "widget_class \"*GtkMenu\" style \"msw-menu\"\n"
+               "widget_class \"*GtkMenuShell*\" style \"msw-menu\"\n",
+               fg_prelight.red, fg_prelight.green, fg_prelight.blue,
+               bg_prelight.red, bg_prelight.green, bg_prelight.blue,
+               text_prelight.red, text_prelight.green, text_prelight.blue,
+               base_prelight.red, base_prelight.green, base_prelight.blue,
+               menu_text_color.red, menu_text_color.green,
+               menu_text_color.blue, menu_color.red, menu_color.green,
+               menu_color.blue, (font_ptr ? "font_name" : "#"),
+               (font_ptr ? font_ptr : " font name should go here"));
+    gtk_rc_parse_string (buf);
+
+    /* Enable coloring for menu bars. */
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-menu-bar\" = \"msw-menu\"\n"
+               "{\n"
+               "bg[NORMAL] = { %d, %d, %d }\n"
+               "GtkMenuBar::shadow-type = %s\n"
+               "}widget_class \"*MenuBar*\" style \"msw-menu-bar\"\n",
+               btn_face.red, btn_face.green, btn_face.blue, "etched-in");
+    gtk_rc_parse_string (buf);
+
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-toolbar\" = \"msw-default\"\n"
+               "{\n"
+               "GtkHandleBox::shadow-type = %s\n"
+               "GtkToolbar::shadow-type = %s\n"
+               "}widget_class \"*HandleBox*\" style \"msw-toolbar\"\n",
+               "etched-in", "etched-in");
+    gtk_rc_parse_string (buf);
+
+    /* enable tooltip fonts */
+    font_ptr =
+       sys_font_to_pango_font (XP_THEME_CLASS_STATUS, XP_THEME_FONT_STATUS,
+                               font_buf, sizeof (font_buf));
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-tooltips-caption\" = \"msw-default\"\n"
+               "{fg[NORMAL] = { %d, %d, %d }\n" "%s = \"%s\"\n"
+               "}widget \"gtk-tooltips.GtkLabel\" style \"msw-tooltips-caption\"\n",
+               tooltip_fore.red, tooltip_fore.green, tooltip_fore.blue,
+               (font_ptr ? "font_name" : "#"),
+               (font_ptr ? font_ptr : " font name should go here"));
+    gtk_rc_parse_string (buf);
+
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-tooltips\" = \"msw-default\"\n"
+               "{bg[NORMAL] = { %d, %d, %d }\n"
+               "}widget \"gtk-tooltips*\" style \"msw-tooltips\"\n",
+               tooltip_back.red, tooltip_back.green, tooltip_back.blue);
+    gtk_rc_parse_string (buf);
+
+    /* enable font theming for status bars */
+    font_ptr =
+       sys_font_to_pango_font (XP_THEME_CLASS_STATUS, XP_THEME_FONT_STATUS,
+                               font_buf, sizeof (font_buf));
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-status\" = \"msw-default\"\n" "{%s = \"%s\"\n"
+               "bg[NORMAL] = { %d, %d, %d }\n"
+               "}widget_class \"*Status*\" style \"msw-status\"\n",
+               (font_ptr ? "font_name" : "#"),
+               (font_ptr ? font_ptr : " font name should go here"),
+               btn_face.red, btn_face.green, btn_face.blue);
+    gtk_rc_parse_string (buf);
+
+    /* enable coloring for text on buttons TODO: use GetThemeMetric for the
+       border and outside border */
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-button\" = \"msw-default\"\n"
+               "{\n"
+               "bg[NORMAL] = { %d, %d, %d }\n"
+               "bg[PRELIGHT] = { %d, %d, %d }\n"
+               "bg[INSENSITIVE] = { %d, %d, %d }\n"
+               "fg[PRELIGHT] = { %d, %d, %d }\n"
+               "GtkButton::default-border = { 1, 1, 1, 1 }\n"
+               "GtkButton::default-outside-border = { 0, 0, 0, 0 }\n"
+               "GtkButton::child-displacement-x = 1\n"
+               "GtkButton::child-displacement-y = 1\n"
+               "}widget_class \"*Button*\" style \"msw-button\"\n",
+               btn_face.red, btn_face.green, btn_face.blue,
+               btn_face.red, btn_face.green, btn_face.blue,
+               btn_face.red, btn_face.green, btn_face.blue,
+               btn_fore.red, btn_fore.green, btn_fore.blue);
+    gtk_rc_parse_string (buf);
+
+    /* enable coloring for progress bars */
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-progress\" = \"msw-default\"\n"
+               "{bg[PRELIGHT] = { %d, %d, %d }\n"
+               "bg[NORMAL] = { %d, %d, %d }\n"
+               "}widget_class \"*Progress*\" style \"msw-progress\"\n",
+               progress_back.red,
+               progress_back.green,
+               progress_back.blue,
+               btn_face.red, btn_face.green, btn_face.blue);
+    gtk_rc_parse_string (buf);
+
+    /* scrollbar thumb width and height */
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-vscrollbar\" = \"msw-default\"\n"
+               "{GtkRange::slider-width = %d\n"
+               "GtkRange::stepper-size = %d\n"
+               "GtkRange::stepper-spacing = 0\n"
+               "GtkRange::trough_border = 0\n"
+               "GtkScale::slider-length = %d\n"
+               "GtkScrollbar::min-slider-length = 8\n"
+               "}widget_class \"*VScrollbar*\" style \"msw-vscrollbar\"\n"
+               "widget_class \"*VScale*\" style \"msw-vscrollbar\"\n",
+               GetSystemMetrics (SM_CYVTHUMB),
+               get_system_metric (XP_THEME_CLASS_SCROLLBAR, SM_CXVSCROLL),
+               11);
+    gtk_rc_parse_string (buf);
+
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-hscrollbar\" = \"msw-default\"\n"
+               "{GtkRange::slider-width = %d\n"
+               "GtkRange::stepper-size = %d\n"
+               "GtkRange::stepper-spacing = 0\n"
+               "GtkRange::trough_border = 0\n"
+               "GtkScale::slider-length = %d\n"
+               "GtkScrollbar::min-slider-length = 8\n"
+               "}widget_class \"*HScrollbar*\" style \"msw-hscrollbar\"\n"
+               "widget_class \"*HScale*\" style \"msw-hscrollbar\"\n",
+               GetSystemMetrics (SM_CXHTHUMB),
+               get_system_metric (XP_THEME_CLASS_SCROLLBAR, SM_CYHSCROLL),
+               11);
+    gtk_rc_parse_string (buf);
+
+    /* radio/check button sizes */
+    g_snprintf (buf, sizeof (buf),
+               "style \"msw-checkbutton\" = \"msw-button\"\n"
+               "{GtkCheckButton::indicator-size = 13\n"
+               "}widget_class \"*CheckButton*\" style \"msw-checkbutton\"\n"
+               "widget_class \"*RadioButton*\" style \"msw-checkbutton\"\n");
+    gtk_rc_parse_string (buf);
 }
 
 static void
-setup_system_styles(GtkStyle *style)
+setup_system_styles (GtkStyle * style)
 {
-  int i;
-
-  /* Default background */
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNFACE,   &style->bg[GTK_STATE_NORMAL]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT,    COLOR_HIGHLIGHT, &style->bg[GTK_STATE_SELECTED]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNFACE,   &style->bg[GTK_STATE_INSENSITIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNFACE,   &style->bg[GTK_STATE_ACTIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNFACE,   &style->bg[GTK_STATE_PRELIGHT]);
-
-  /* Default base */
-  sys_color_to_gtk_color(XP_THEME_CLASS_WINDOW,  COLOR_WINDOW,    &style->base[GTK_STATE_NORMAL]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT,    COLOR_HIGHLIGHT, &style->base[GTK_STATE_SELECTED]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNFACE,   &style->base[GTK_STATE_INSENSITIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNFACE,   &style->base[GTK_STATE_ACTIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_WINDOW,  COLOR_WINDOW,    &style->base[GTK_STATE_PRELIGHT]);
-
-  /* Default text */
-  sys_color_to_gtk_color(XP_THEME_CLASS_WINDOW,  COLOR_WINDOWTEXT,    &style->text[GTK_STATE_NORMAL]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT,    COLOR_HIGHLIGHTTEXT, &style->text[GTK_STATE_SELECTED]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_GRAYTEXT,      &style->text[GTK_STATE_INSENSITIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNTEXT,       &style->text[GTK_STATE_ACTIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_WINDOW,  COLOR_WINDOWTEXT,    &style->text[GTK_STATE_PRELIGHT]);
-
-  /* Default foreground */
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNTEXT,       &style->fg[GTK_STATE_NORMAL]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT,    COLOR_HIGHLIGHTTEXT, &style->fg[GTK_STATE_SELECTED]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_TEXT,    COLOR_GRAYTEXT,      &style->fg[GTK_STATE_INSENSITIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON,  COLOR_BTNTEXT,       &style->fg[GTK_STATE_ACTIVE]);
-  sys_color_to_gtk_color(XP_THEME_CLASS_WINDOW,  COLOR_WINDOWTEXT,    &style->fg[GTK_STATE_PRELIGHT]);
-
-  for (i = 0; i < 5; i++)
-    {
-      sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON, COLOR_3DSHADOW, &style->dark[i]);
-      sys_color_to_gtk_color(XP_THEME_CLASS_BUTTON, COLOR_3DHILIGHT, &style->light[i]);
-
-      style->mid[i].red = (style->light[i].red + style->dark[i].red) / 2;
-      style->mid[i].green = (style->light[i].green + style->dark[i].green) / 2;
-      style->mid[i].blue = (style->light[i].blue + style->dark[i].blue) / 2;
-
-      style->text_aa[i].red = (style->text[i].red + style->base[i].red) / 2;
-      style->text_aa[i].green = (style->text[i].green + style->base[i].green) / 2;
-      style->text_aa[i].blue = (style->text[i].blue + style->base[i].blue) / 2;
-    }
+    int i;
+
+    /* Default background */
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNFACE,
+                           &style->bg[GTK_STATE_NORMAL]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHT,
+                           &style->bg[GTK_STATE_SELECTED]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNFACE,
+                           &style->bg[GTK_STATE_INSENSITIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNFACE,
+                           &style->bg[GTK_STATE_ACTIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNFACE,
+                           &style->bg[GTK_STATE_PRELIGHT]);
+
+    /* Default base */
+    sys_color_to_gtk_color (XP_THEME_CLASS_WINDOW, COLOR_WINDOW,
+                           &style->base[GTK_STATE_NORMAL]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHT,
+                           &style->base[GTK_STATE_SELECTED]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNFACE,
+                           &style->base[GTK_STATE_INSENSITIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNFACE,
+                           &style->base[GTK_STATE_ACTIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_WINDOW, COLOR_WINDOW,
+                           &style->base[GTK_STATE_PRELIGHT]);
+
+    /* Default text */
+    sys_color_to_gtk_color (XP_THEME_CLASS_WINDOW, COLOR_WINDOWTEXT,
+                           &style->text[GTK_STATE_NORMAL]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHTTEXT,
+                           &style->text[GTK_STATE_SELECTED]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_GRAYTEXT,
+                           &style->text[GTK_STATE_INSENSITIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNTEXT,
+                           &style->text[GTK_STATE_ACTIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_WINDOW, COLOR_WINDOWTEXT,
+                           &style->text[GTK_STATE_PRELIGHT]);
+
+    /* Default foreground */
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNTEXT,
+                           &style->fg[GTK_STATE_NORMAL]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_HIGHLIGHTTEXT,
+                           &style->fg[GTK_STATE_SELECTED]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_TEXT, COLOR_GRAYTEXT,
+                           &style->fg[GTK_STATE_INSENSITIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_BTNTEXT,
+                           &style->fg[GTK_STATE_ACTIVE]);
+    sys_color_to_gtk_color (XP_THEME_CLASS_WINDOW, COLOR_WINDOWTEXT,
+                           &style->fg[GTK_STATE_PRELIGHT]);
+
+    for (i = 0; i < 5; i++)
+       {
+           sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_3DSHADOW,
+                                   &style->dark[i]);
+           sys_color_to_gtk_color (XP_THEME_CLASS_BUTTON, COLOR_3DHILIGHT,
+                                   &style->light[i]);
+
+           style->mid[i].red =
+               (style->light[i].red + style->dark[i].red) / 2;
+           style->mid[i].green =
+               (style->light[i].green + style->dark[i].green) / 2;
+           style->mid[i].blue =
+               (style->light[i].blue + style->dark[i].blue) / 2;
+
+           style->text_aa[i].red =
+               (style->text[i].red + style->base[i].red) / 2;
+           style->text_aa[i].green =
+               (style->text[i].green + style->base[i].green) / 2;
+           style->text_aa[i].blue =
+               (style->text[i].blue + style->base[i].blue) / 2;
+       }
 }
 
 static gboolean
-sanitize_size (GdkWindow *window,
-              gint      *width,
-              gint      *height)
+sanitize_size (GdkWindow * window, gint * width, gint * height)
 {
-  gboolean set_bg = FALSE;
-
-  if ((*width == -1) && (*height == -1))
-    {
-      set_bg = GDK_IS_WINDOW (window);
-      gdk_drawable_get_size (window, width, height);
-    }
-  else if (*width == -1)
-    gdk_drawable_get_size (window, width, NULL);
-  else if (*height == -1)
-    gdk_drawable_get_size (window, NULL, height);
-
-  return set_bg;
+    gboolean set_bg = FALSE;
+
+    if ((*width == -1) && (*height == -1))
+       {
+           set_bg = GDK_IS_WINDOW (window);
+           gdk_drawable_get_size (window, width, height);
+       }
+    else if (*width == -1)
+       gdk_drawable_get_size (window, width, NULL);
+    else if (*height == -1)
+       gdk_drawable_get_size (window, NULL, height);
+
+    return set_bg;
 }
 
 static XpThemeElement
-map_gtk_progress_bar_to_xp(GtkProgressBar *progress_bar, gboolean trough)
+map_gtk_progress_bar_to_xp (GtkProgressBar * progress_bar, gboolean trough)
 {
-  XpThemeElement ret;
-  switch (progress_bar->orientation)
-    {
-    case GTK_PROGRESS_LEFT_TO_RIGHT:
-    case GTK_PROGRESS_RIGHT_TO_LEFT:
-      ret = trough
-        ? XP_THEME_ELEMENT_PROGRESS_TROUGH_H
-        : XP_THEME_ELEMENT_PROGRESS_BAR_H;
-      break;
-    default:
-      ret = trough
-        ? XP_THEME_ELEMENT_PROGRESS_TROUGH_V
-        : XP_THEME_ELEMENT_PROGRESS_BAR_V;
-      break;
-    }
-  return ret;
+    XpThemeElement ret;
+
+    switch (progress_bar->orientation)
+       {
+       case GTK_PROGRESS_LEFT_TO_RIGHT:
+       case GTK_PROGRESS_RIGHT_TO_LEFT:
+           ret = trough
+               ? XP_THEME_ELEMENT_PROGRESS_TROUGH_H
+               : XP_THEME_ELEMENT_PROGRESS_BAR_H;
+           break;
+       default:
+           ret = trough
+               ? XP_THEME_ELEMENT_PROGRESS_TROUGH_V
+               : XP_THEME_ELEMENT_PROGRESS_BAR_V;
+           break;
+       }
+    return ret;
 }
 
 static void
-draw_part (GdkDrawable  *drawable,
-          GdkGC        *gc,
-          GdkRectangle *area,
-          gint          x,
-          gint          y,
-          Part          part)
+draw_part (GdkDrawable * drawable,
+          GdkGC * gc, GdkRectangle * area, gint x, gint y, Part part)
 {
-  if (area)
-    gdk_gc_set_clip_rectangle (gc, area);
+    if (area)
+       gdk_gc_set_clip_rectangle (gc, area);
 
-  if (!parts[part].bmap)
-      parts[part].bmap = gdk_bitmap_create_from_data (drawable,
-                                                     parts[part].bits,
-                                                     PART_SIZE, PART_SIZE);
+    if (!parts[part].bmap)
+       parts[part].bmap = gdk_bitmap_create_from_data (drawable,
+                                                       parts[part].bits,
+                                                       PART_SIZE, PART_SIZE);
 
-  gdk_gc_set_ts_origin (gc, x, y);
-  gdk_gc_set_stipple (gc, parts[part].bmap);
-  gdk_gc_set_fill (gc, GDK_STIPPLED);
+    gdk_gc_set_ts_origin (gc, x, y);
+    gdk_gc_set_stipple (gc, parts[part].bmap);
+    gdk_gc_set_fill (gc, GDK_STIPPLED);
 
-  gdk_draw_rectangle (drawable, gc, TRUE, x, y, PART_SIZE, PART_SIZE);
+    gdk_draw_rectangle (drawable, gc, TRUE, x, y, PART_SIZE, PART_SIZE);
 
-  gdk_gc_set_fill (gc, GDK_SOLID);
+    gdk_gc_set_fill (gc, GDK_SOLID);
 
-  if (area)
-    gdk_gc_set_clip_rectangle (gc, NULL);
+    if (area)
+       gdk_gc_set_clip_rectangle (gc, NULL);
 }
 
 static void
-draw_check(GtkStyle      *style,
-          GdkWindow     *window,
-          GtkStateType   state,
-          GtkShadowType  shadow,
-          GdkRectangle  *area,
-          GtkWidget     *widget,
-          const gchar   *detail,
-          gint           x,
-          gint           y,
-          gint           width,
-          gint           height)
+draw_check (GtkStyle * style,
+           GdkWindow * window,
+           GtkStateType state,
+           GtkShadowType shadow,
+           GdkRectangle * area,
+           GtkWidget * widget,
+           const gchar * detail, gint x, gint y, gint width, gint height)
 {
-  x -= (1 + PART_SIZE - width) / 2;
-  y -= (1 + PART_SIZE - height) / 2;
+    x -= (1 + PART_SIZE - width) / 2;
+    y -= (1 + PART_SIZE - height) / 2;
 
-  if (detail && strcmp (detail, "check") == 0) /* Menu item */
-    {
-      if (shadow == GTK_SHADOW_IN)
+    if (detail && strcmp (detail, "check") == 0)       /* Menu item */
        {
-         draw_part (window, style->black_gc, area, x, y, CHECK_TEXT);
-         draw_part (window, style->dark_gc[state], area, x, y, CHECK_AA);
+           if (shadow == GTK_SHADOW_IN)
+               {
+                   draw_part (window, style->black_gc, area, x, y,
+                              CHECK_TEXT);
+                   draw_part (window, style->dark_gc[state], area, x, y,
+                              CHECK_AA);
+               }
+       }
+    else
+       {
+           if (!xp_theme_draw (window, shadow == GTK_SHADOW_IN
+                               ? XP_THEME_ELEMENT_PRESSED_CHECKBOX
+                               : XP_THEME_ELEMENT_CHECKBOX,
+                               style, x, y, width, height, state, area))
+               {
+                   draw_part (window, style->black_gc, area, x, y,
+                              CHECK_BLACK);
+                   draw_part (window, style->dark_gc[state], area, x, y,
+                              CHECK_DARK);
+                   draw_part (window, style->mid_gc[state], area, x, y,
+                              CHECK_MID);
+                   draw_part (window, style->light_gc[state], area, x, y,
+                              CHECK_LIGHT);
+                   draw_part (window, style->base_gc[state], area, x, y,
+                              CHECK_BASE);
+
+                   if (shadow == GTK_SHADOW_IN)
+                       {
+                           draw_part (window, style->text_gc[state], area, x,
+                                      y, CHECK_TEXT);
+                           draw_part (window, style->text_aa_gc[state], area,
+                                      x, y, CHECK_AA);
+                       }
+               }
        }
-    }
-  else
-    {
-      if (!xp_theme_draw(window, shadow == GTK_SHADOW_IN
-                        ? XP_THEME_ELEMENT_PRESSED_CHECKBOX
-                        : XP_THEME_ELEMENT_CHECKBOX,
-                        style, x, y, width, height, state, area))
-        {
-          draw_part (window, style->black_gc, area, x, y, CHECK_BLACK);
-          draw_part (window, style->dark_gc[state], area, x, y, CHECK_DARK);
-          draw_part (window, style->mid_gc[state], area, x, y, CHECK_MID);
-          draw_part (window, style->light_gc[state], area, x, y, CHECK_LIGHT);
-          draw_part (window, style->base_gc[state], area, x, y, CHECK_BASE);
-
-          if (shadow == GTK_SHADOW_IN)
-            {
-              draw_part (window, style->text_gc[state], area, x, y, CHECK_TEXT);
-              draw_part (window, style->text_aa_gc[state], area, x, y, CHECK_AA);
-            }
-        }
-    }
 }
 
 static void
-draw_expander(GtkStyle      *style,
-             GdkWindow     *window,
-             GtkStateType   state,
-             GdkRectangle  *area,
-             GtkWidget     *widget,
-             const gchar   *detail,
-             gint           x,
-             gint           y,
-             GtkExpanderStyle expander_style)
+draw_expander (GtkStyle * style,
+              GdkWindow * window,
+              GtkStateType state,
+              GdkRectangle * area,
+              GtkWidget * widget,
+              const gchar * detail,
+              gint x, gint y, GtkExpanderStyle expander_style)
 {
-  gint expander_size;
-  gint expander_semi_size;
-  GdkColor color;
-  GdkGCValues values;
-  gboolean success;
-  XpThemeElement xp_expander;
-
-  gtk_widget_style_get (widget, "expander_size", &expander_size, NULL);
-
-  switch (expander_style)
-    {
-    case GTK_EXPANDER_COLLAPSED:
-    case GTK_EXPANDER_SEMI_COLLAPSED:
-      xp_expander = XP_THEME_ELEMENT_TREEVIEW_EXPANDER_CLOSED;
-      break;
-    default:
-      xp_expander = XP_THEME_ELEMENT_TREEVIEW_EXPANDER_OPENED;
-      break;
-    }
-
-  if ((expander_size % 2) == 0)
-    expander_size--;
-
-  if (expander_size > 2)
-    expander_size -= 2;
-
-  if (area)
-    gdk_gc_set_clip_rectangle (style->fg_gc[state], area);
-
-  expander_semi_size = expander_size / 2;
-  x -= expander_semi_size;
-  y -= expander_semi_size;
-
-  gdk_gc_get_values (style->fg_gc[state], &values);
-
-  if (! xp_theme_draw(window, xp_expander, style,
-                      x, y,
-                      expander_size, expander_size, state, area))
-    {
-      /* RGB values to emulate Windows Classic style */
-      color.red = color.green = color.blue = 128 << 8;
-
-      success = gdk_colormap_alloc_color
-        (gtk_widget_get_default_colormap (), &color, FALSE, TRUE);
-
-      if (success)
-        gdk_gc_set_foreground (style->fg_gc[state], &color);
-
-      gdk_draw_rectangle
-        (window, style->fg_gc[state], FALSE, x, y,
-         expander_size - 1, expander_size - 1);
-
-      gdk_draw_line
-        (window, style->fg_gc[state], x + 2, y + expander_semi_size,
-         x + expander_size - 2, y + expander_semi_size);
-
-      switch (expander_style)
-        {
-        case GTK_EXPANDER_COLLAPSED:
-        case GTK_EXPANDER_SEMI_COLLAPSED:
-          gdk_draw_line
-            (window, style->fg_gc[state], x + expander_semi_size, y + 2,
-             x + expander_semi_size, y + expander_size - 2);
-          break;
+    gint expander_size;
+    gint expander_semi_size;
+    GdkColor color;
+    GdkGCValues values;
+    gboolean success;
+    XpThemeElement xp_expander;
+
+    gtk_widget_style_get (widget, "expander_size", &expander_size, NULL);
 
+    switch (expander_style)
+       {
+       case GTK_EXPANDER_COLLAPSED:
+       case GTK_EXPANDER_SEMI_COLLAPSED:
+           xp_expander = XP_THEME_ELEMENT_TREEVIEW_EXPANDER_CLOSED;
+           break;
        default:
-         break;
-        }
+           xp_expander = XP_THEME_ELEMENT_TREEVIEW_EXPANDER_OPENED;
+           break;
+       }
+
+    if ((expander_size % 2) == 0)
+       expander_size--;
+
+    if (expander_size > 2)
+       expander_size -= 2;
+
+    if (area)
+       gdk_gc_set_clip_rectangle (style->fg_gc[state], area);
+
+    expander_semi_size = expander_size / 2;
+    x -= expander_semi_size;
+    y -= expander_semi_size;
+
+    gdk_gc_get_values (style->fg_gc[state], &values);
+
+    if (!xp_theme_draw (window, xp_expander, style,
+                       x, y, expander_size, expander_size, state, area))
+       {
+           /* RGB values to emulate Windows Classic style */
+           color.red = color.green = color.blue = 128 << 8;
 
-      if (success)
-        gdk_gc_set_foreground (style->fg_gc[state], &values.foreground);
-    }
+           success = gdk_colormap_alloc_color
+               (gtk_widget_get_default_colormap (), &color, FALSE, TRUE);
+
+           if (success)
+               gdk_gc_set_foreground (style->fg_gc[state], &color);
+
+           gdk_draw_rectangle
+               (window, style->fg_gc[state], FALSE, x, y,
+                expander_size - 1, expander_size - 1);
+
+           gdk_draw_line
+               (window, style->fg_gc[state], x + 2, y + expander_semi_size,
+                x + expander_size - 2, y + expander_semi_size);
+
+           switch (expander_style)
+               {
+               case GTK_EXPANDER_COLLAPSED:
+               case GTK_EXPANDER_SEMI_COLLAPSED:
+                   gdk_draw_line
+                       (window, style->fg_gc[state], x + expander_semi_size,
+                        y + 2, x + expander_semi_size,
+                        y + expander_size - 2);
+                   break;
+
+               default:
+                   break;
+               }
+
+           if (success)
+               gdk_gc_set_foreground (style->fg_gc[state],
+                                      &values.foreground);
+       }
 
-  if (area)
-    gdk_gc_set_clip_rectangle (style->fg_gc[state], NULL);
+    if (area)
+       gdk_gc_set_clip_rectangle (style->fg_gc[state], NULL);
 }
 
 static void
-draw_option(GtkStyle      *style,
-           GdkWindow     *window,
-           GtkStateType   state,
-           GtkShadowType  shadow,
-           GdkRectangle  *area,
-           GtkWidget     *widget,
-           const gchar   *detail,
-           gint           x,
-           gint           y,
-           gint           width,
-           gint           height)
+draw_option (GtkStyle * style,
+            GdkWindow * window,
+            GtkStateType state,
+            GtkShadowType shadow,
+            GdkRectangle * area,
+            GtkWidget * widget,
+            const gchar * detail, gint x, gint y, gint width, gint height)
 {
-  x -= (1 + PART_SIZE - width) / 2;
-  y -= (1 + PART_SIZE - height) / 2;
-
-  if (detail && strcmp (detail, "option") == 0)        /* Menu item */
-    {
-      if (shadow == GTK_SHADOW_IN)
-       draw_part (window, style->fg_gc[state], area, x, y, RADIO_TEXT);
-    }
-  else
-    {
-      if (xp_theme_draw (window, shadow == GTK_SHADOW_IN
-                        ? XP_THEME_ELEMENT_PRESSED_RADIO_BUTTON
-                        : XP_THEME_ELEMENT_RADIO_BUTTON,
-                        style, x, y, width, height, state, area))
-        {
-        }
-      else
+    x -= (1 + PART_SIZE - width) / 2;
+    y -= (1 + PART_SIZE - height) / 2;
+
+    if (detail && strcmp (detail, "option") == 0)      /* Menu item */
        {
-         draw_part (window, style->black_gc, area, x, y, RADIO_BLACK);
-         draw_part (window, style->dark_gc[state], area, x, y, RADIO_DARK);
-         draw_part (window, style->mid_gc[state], area, x, y, RADIO_MID);
-         draw_part (window, style->light_gc[state], area, x, y, RADIO_LIGHT);
-         draw_part (window, style->base_gc[state], area, x, y, RADIO_BASE);
-
-         if (shadow == GTK_SHADOW_IN)
-           draw_part (window, style->text_gc[state], area, x, y, RADIO_TEXT);
+           if (shadow == GTK_SHADOW_IN)
+               draw_part (window, style->fg_gc[state], area, x, y,
+                          RADIO_TEXT);
+       }
+    else
+       {
+           if (xp_theme_draw (window, shadow == GTK_SHADOW_IN
+                              ? XP_THEME_ELEMENT_PRESSED_RADIO_BUTTON
+                              : XP_THEME_ELEMENT_RADIO_BUTTON,
+                              style, x, y, width, height, state, area))
+               {
+               }
+           else
+               {
+                   draw_part (window, style->black_gc, area, x, y,
+                              RADIO_BLACK);
+                   draw_part (window, style->dark_gc[state], area, x, y,
+                              RADIO_DARK);
+                   draw_part (window, style->mid_gc[state], area, x, y,
+                              RADIO_MID);
+                   draw_part (window, style->light_gc[state], area, x, y,
+                              RADIO_LIGHT);
+                   draw_part (window, style->base_gc[state], area, x, y,
+                              RADIO_BASE);
+
+                   if (shadow == GTK_SHADOW_IN)
+                       draw_part (window, style->text_gc[state], area, x, y,
+                                  RADIO_TEXT);
+               }
        }
-    }
 }
 
 static void
-draw_varrow (GdkWindow     *window,
-            GdkGC         *gc,
-            GtkShadowType  shadow_type,
-            GdkRectangle  *area,
-            GtkArrowType   arrow_type,
-            gint           x,
-            gint           y,
-            gint           width,
-            gint           height)
+draw_varrow (GdkWindow * window,
+            GdkGC * gc,
+            GtkShadowType shadow_type,
+            GdkRectangle * area,
+            GtkArrowType arrow_type, gint x, gint y, gint width, gint height)
 {
-  gint steps, extra;
-  gint y_start, y_increment;
-  gint i;
-
-  if (area)
-    gdk_gc_set_clip_rectangle (gc, area);
-
-  width = width + width % 2 - 1;       /* Force odd */
-
-  steps = 1 + width / 2;
-
-  extra = height - steps;
-
-  if (arrow_type == GTK_ARROW_DOWN)
-    {
-      y_start = y;
-      y_increment = 1;
-    }
-  else
-    {
-      y_start = y + height - 1;
-      y_increment = -1;
-    }
-
-  for (i = extra; i < height; i++)
-    {
-      gdk_draw_line (window, gc,
-                    x + (i - extra),              y_start + i * y_increment,
-                    x + width - (i - extra) - 1,  y_start + i * y_increment);
-    }
-
-  if (area)
-    gdk_gc_set_clip_rectangle (gc, NULL);
+    gint steps, extra;
+    gint y_start, y_increment;
+    gint i;
+
+    if (area)
+       gdk_gc_set_clip_rectangle (gc, area);
+
+    width = width + width % 2 - 1;     /* Force odd */
+    steps = 1 + width / 2;
+    extra = height - steps;
+
+    if (arrow_type == GTK_ARROW_DOWN)
+       {
+           y_start = y;
+           y_increment = 1;
+       }
+    else
+       {
+           y_start = y + height - 1;
+           y_increment = -1;
+       }
+
+    for (i = extra; i < height; i++)
+       {
+           gdk_draw_line (window, gc,
+                          x + (i - extra), y_start + i * y_increment,
+                          x + width - (i - extra) - 1,
+                          y_start + i * y_increment);
+       }
+
+    if (area)
+       gdk_gc_set_clip_rectangle (gc, NULL);
 }
 
 static void
-draw_harrow (GdkWindow     *window,
-            GdkGC         *gc,
-            GtkShadowType  shadow_type,
-            GdkRectangle  *area,
-            GtkArrowType   arrow_type,
-            gint           x,
-            gint           y,
-            gint           width,
-            gint           height)
+draw_harrow (GdkWindow * window,
+            GdkGC * gc,
+            GtkShadowType shadow_type,
+            GdkRectangle * area,
+            GtkArrowType arrow_type, gint x, gint y, gint width, gint height)
 {
-  gint steps, extra;
-  gint x_start, x_increment;
-  gint i;
-
-  if (area)
-    gdk_gc_set_clip_rectangle (gc, area);
+    gint steps, extra;
+    gint x_start, x_increment;
+    gint i;
 
-  height = height + height % 2 - 1;    /* Force odd */
+    if (area)
+       gdk_gc_set_clip_rectangle (gc, area);
 
-  steps = 1 + height / 2;
+    height = height + height % 2 - 1;  /* Force odd */
+    steps = 1 + height / 2;
+    extra = width - steps;
 
-  extra = width - steps;
-
-  if (arrow_type == GTK_ARROW_RIGHT)
-    {
-      x_start = x;
-      x_increment = 1;
-    }
-  else
-    {
-      x_start = x + width - 1;
-      x_increment = -1;
-    }
+    if (arrow_type == GTK_ARROW_RIGHT)
+       {
+           x_start = x;
+           x_increment = 1;
+       }
+    else
+       {
+           x_start = x + width - 1;
+           x_increment = -1;
+       }
 
-  for (i = extra; i < width; i++)
-    {
-      gdk_draw_line (window, gc,
-                    x_start + i * x_increment, y + (i - extra),
-                    x_start + i * x_increment, y + height - (i - extra) - 1);
-    }
+    for (i = extra; i < width; i++)
+       {
+           gdk_draw_line (window, gc,
+                          x_start + i * x_increment, y + (i - extra),
+                          x_start + i * x_increment,
+                          y + height - (i - extra) - 1);
+       }
 
 
-  if (area)
-    gdk_gc_set_clip_rectangle (gc, NULL);
+    if (area)
+       gdk_gc_set_clip_rectangle (gc, NULL);
 }
 
 /* This function makes up for some brokeness in gtkrange.c
@@ -1153,559 +1219,636 @@ draw_harrow (GdkWindow     *window,
  * to the point we don't have room for full-sized steppers.
  */
 static void
-reverse_engineer_stepper_box (GtkWidget    *range,
-                             GtkArrowType  arrow_type,
-                             gint         *x,
-                             gint         *y,
-                             gint         *width,
-                             gint         *height)
+reverse_engineer_stepper_box (GtkWidget * range,
+                             GtkArrowType arrow_type,
+                             gint * x, gint * y, gint * width, gint * height)
 {
-  gint slider_width = 14, stepper_size = 14;
-  gint box_width;
-  gint box_height;
-
-  if (range)
-    {
-      gtk_widget_style_get (range,
-                           "slider_width", &slider_width,
-                           "stepper_size", &stepper_size,
-                           NULL);
-    }
-
-  if (arrow_type == GTK_ARROW_UP || arrow_type == GTK_ARROW_DOWN)
-    {
-      box_width = slider_width;
-      box_height = stepper_size;
-    }
-  else
-    {
-      box_width = stepper_size;
-      box_height = slider_width;
-    }
-
-  *x = *x - (box_width - *width) / 2;
-  *y = *y - (box_height - *height) / 2;
-  *width = box_width;
-  *height = box_height;
+    gint slider_width = 14, stepper_size = 14;
+    gint box_width;
+    gint box_height;
+
+    if (range)
+       {
+           gtk_widget_style_get (range,
+                                 "slider_width", &slider_width,
+                                 "stepper_size", &stepper_size, NULL);
+       }
+
+    if (arrow_type == GTK_ARROW_UP || arrow_type == GTK_ARROW_DOWN)
+       {
+           box_width = slider_width;
+           box_height = stepper_size;
+       }
+    else
+       {
+           box_width = stepper_size;
+           box_height = slider_width;
+       }
+
+    *x = *x - (box_width - *width) / 2;
+    *y = *y - (box_height - *height) / 2;
+    *width = box_width;
+    *height = box_height;
 }
 
-static XpThemeElement to_xp_arrow(GtkArrowType   arrow_type)
+static XpThemeElement
+to_xp_arrow (GtkArrowType arrow_type)
 {
-       XpThemeElement xp_arrow;
+    XpThemeElement xp_arrow;
 
-       switch (arrow_type)
+    switch (arrow_type)
        {
-               case GTK_ARROW_UP:
-                       xp_arrow = XP_THEME_ELEMENT_ARROW_UP;
-                       break;
-               case GTK_ARROW_DOWN:
-                       xp_arrow = XP_THEME_ELEMENT_ARROW_DOWN;
-                       break;
-               case GTK_ARROW_LEFT:
-                       xp_arrow = XP_THEME_ELEMENT_ARROW_LEFT;
-                       break;
-               default:
-                       xp_arrow = XP_THEME_ELEMENT_ARROW_RIGHT;
-                       break;
+       case GTK_ARROW_UP:
+           xp_arrow = XP_THEME_ELEMENT_ARROW_UP;
+           break;
+       case GTK_ARROW_DOWN:
+           xp_arrow = XP_THEME_ELEMENT_ARROW_DOWN;
+           break;
+       case GTK_ARROW_LEFT:
+           xp_arrow = XP_THEME_ELEMENT_ARROW_LEFT;
+           break;
+       default:
+           xp_arrow = XP_THEME_ELEMENT_ARROW_RIGHT;
+           break;
        }
 
-       return xp_arrow;
+    return xp_arrow;
 }
 
 static void
-draw_arrow (GtkStyle      *style,
-           GdkWindow     *window,
-           GtkStateType   state,
-           GtkShadowType  shadow,
-           GdkRectangle  *area,
-           GtkWidget     *widget,
-           const gchar   *detail,
-           GtkArrowType   arrow_type,
-           gboolean       fill,
-           gint           x,
-           gint           y,
-           gint           width,
-           gint           height)
+draw_arrow (GtkStyle * style,
+           GdkWindow * window,
+           GtkStateType state,
+           GtkShadowType shadow,
+           GdkRectangle * area,
+           GtkWidget * widget,
+           const gchar * detail,
+           GtkArrowType arrow_type,
+           gboolean fill, gint x, gint y, gint width, gint height)
 {
-  const gchar * name;
-
-  name = gtk_widget_get_name (widget);
-
-  sanitize_size (window, &width, &height);
-
-  if (detail && strcmp (detail, "spinbutton") == 0)
-    {
-      if (xp_theme_is_drawable(XP_THEME_ELEMENT_SPIN_BUTTON_UP))
-        {
-          return;
-        }
-      else
-        {
-          x += (width - 7) / 2;
-
-          if (arrow_type == GTK_ARROW_UP)
-            y += (height - 4) / 2;
-          else
-            y += (1 + height - 4) / 2;
-          draw_varrow (window, style->fg_gc[state], shadow, area, arrow_type,
-                       x, y, 7, 4);
-        }
-    }
-  else if (detail && (!strcmp (detail, "vscrollbar")
-                      || !strcmp (detail, "hscrollbar")))
-    {
-      gboolean is_disabled = FALSE;
-      GtkScrollbar * scrollbar = GTK_SCROLLBAR(widget);
-      gint box_x = x;
-      gint box_y = y;
-      gint box_width = width;
-      gint box_height = height;
-
-      reverse_engineer_stepper_box (widget, arrow_type,
-                                   &box_x, &box_y, &box_width, &box_height);
-
-      if (scrollbar->range.adjustment->page_size >= (scrollbar->range.adjustment->upper-scrollbar->range.adjustment->lower))
-        is_disabled = TRUE;
-
-      if (xp_theme_draw(window, to_xp_arrow(arrow_type), style, box_x, box_y, box_width, box_height, state, area))
-        {
-        }
-      else if (arrow_type == GTK_ARROW_UP || arrow_type == GTK_ARROW_DOWN)
-        {
-          x += (width - 7) / 2;
-          y += (height - 5) / 2;
-
-          draw_varrow (window, is_disabled ? style->text_aa_gc[state] : style->fg_gc[state], shadow, area, arrow_type,
-                       x, y, 7, 5);
-        }
-      else
-        {
-          y += (height - 7) / 2;
-          x += (width - 5) / 2;
-
-          draw_harrow (window, is_disabled ? style->text_aa_gc[state] : style->fg_gc[state], shadow, area, arrow_type,
-                       x, y, 5, 7);
-        }
-    }
-  else
-    {
-      /* draw the toolbar chevrons - waiting for GTK 2.4 */
-         if (name && !strcmp (name, "gtk-toolbar-arrow"))
-         {
-                 if (xp_theme_draw(window, XP_THEME_ELEMENT_REBAR_CHEVRON, style, x, y, width, height, state, area))
-                               return;
-         }
-         /* probably a gtk combo box on a toolbar */
-         else if (0 /*widget->parent && GTK_IS_BUTTON (widget->parent)*/)
-               {
-                       if (xp_theme_draw(window, XP_THEME_ELEMENT_COMBOBUTTON, style, x-3, widget->allocation.y+1,
-                        width+5, widget->allocation.height-4, state, area))
-                               return;
-               }
+    const gchar *name;
+
+    name = gtk_widget_get_name (widget);
 
-      if (arrow_type == GTK_ARROW_UP || arrow_type == GTK_ARROW_DOWN)
+    sanitize_size (window, &width, &height);
+
+    if (detail && strcmp (detail, "spinbutton") == 0)
        {
-         x += (width - 7) / 2;
-         y += (height - 5) / 2;
+           if (xp_theme_is_drawable (XP_THEME_ELEMENT_SPIN_BUTTON_UP))
+               {
+                   return;
+               }
+           else
+               {
+                   x += (width - 7) / 2;
+
+                   if (arrow_type == GTK_ARROW_UP)
+                       y += (height - 4) / 2;
+                   else
+                       y += (1 + height - 4) / 2;
+                   draw_varrow (window, style->fg_gc[state], shadow, area,
+                                arrow_type, x, y, 7, 4);
+               }
+       }
+    else if (detail && (!strcmp (detail, "vscrollbar")
+                       || !strcmp (detail, "hscrollbar")))
+       {
+           gboolean is_disabled = FALSE;
+           GtkScrollbar *scrollbar = GTK_SCROLLBAR (widget);
+           gint box_x = x;
+           gint box_y = y;
+           gint box_width = width;
+           gint box_height = height;
+
+           reverse_engineer_stepper_box (widget, arrow_type,
+                                         &box_x, &box_y, &box_width,
+                                         &box_height);
+
+           if (scrollbar->range.adjustment->page_size >=
+               (scrollbar->range.adjustment->upper -
+                scrollbar->range.adjustment->lower))
+               is_disabled = TRUE;
+
+           if (xp_theme_draw
+               (window, to_xp_arrow (arrow_type), style, box_x, box_y,
+                box_width, box_height, state, area))
+               {
+               }
+           else if (arrow_type == GTK_ARROW_UP
+                    || arrow_type == GTK_ARROW_DOWN)
+               {
+                   x += (width - 7) / 2;
+                   y += (height - 5) / 2;
+
+                   draw_varrow (window,
+                                is_disabled ? style->
+                                text_aa_gc[state] : style->fg_gc[state],
+                                shadow, area, arrow_type, x, y, 7, 5);
+               }
+           else
+               {
+                   y += (height - 7) / 2;
+                   x += (width - 5) / 2;
 
-         draw_varrow (window, style->fg_gc[state], shadow, area, arrow_type,
-                      x, y, 7, 5);
+                   draw_harrow (window,
+                                is_disabled ? style->
+                                text_aa_gc[state] : style->fg_gc[state],
+                                shadow, area, arrow_type, x, y, 5, 7);
+               }
        }
-      else
+    else
        {
-         x += (width - 5) / 2;
-         y += (height - 7) / 2;
+           /* draw the toolbar chevrons - waiting for GTK 2.4 */
+           if (name && !strcmp (name, "gtk-toolbar-arrow"))
+               {
+                   if (xp_theme_draw
+                       (window, XP_THEME_ELEMENT_REBAR_CHEVRON, style, x, y,
+                        width, height, state, area))
+                       return;
+               }
+           /* probably a gtk combo box on a toolbar */
+           else if (0          /* widget->parent && GTK_IS_BUTTON
+                                  (widget->parent) */ )
+               {
+                   if (xp_theme_draw
+                       (window, XP_THEME_ELEMENT_COMBOBUTTON, style, x - 3,
+                        widget->allocation.y + 1, width + 5,
+                        widget->allocation.height - 4, state, area))
+                       return;
+               }
 
-         draw_harrow (window, style->fg_gc[state], shadow, area, arrow_type,
-                      x, y, 5, 7);
+           if (arrow_type == GTK_ARROW_UP || arrow_type == GTK_ARROW_DOWN)
+               {
+                   x += (width - 7) / 2;
+                   y += (height - 5) / 2;
+
+                   draw_varrow (window, style->fg_gc[state], shadow, area,
+                                arrow_type, x, y, 7, 5);
+               }
+           else
+               {
+                   x += (width - 5) / 2;
+                   y += (height - 7) / 2;
+
+                   draw_harrow (window, style->fg_gc[state], shadow, area,
+                                arrow_type, x, y, 5, 7);
+               }
        }
-    }
 }
 
 static void
-option_menu_get_props (GtkWidget      *widget,
-                      GtkRequisition *indicator_size,
-                      GtkBorder      *indicator_spacing)
+option_menu_get_props (GtkWidget widget,
+                      GtkRequisition * indicator_size,
+                      GtkBorder indicator_spacing)
 {
-  GtkRequisition *tmp_size = NULL;
-  GtkBorder *tmp_spacing = NULL;
-
-  if (widget)
-    gtk_widget_style_get (widget,
-                         "indicator_size", &tmp_size,
-                         "indicator_spacing", &tmp_spacing,
-                         NULL);
-
-  if (tmp_size)
-    {
-      *indicator_size = *tmp_size;
-      g_free (tmp_size);
-    }
-  else
-    *indicator_size = default_option_indicator_size;
-
-  if (tmp_spacing)
-    {
-      *indicator_spacing = *tmp_spacing;
-      g_free (tmp_spacing);
-    }
-  else
-    *indicator_spacing = default_option_indicator_spacing;
+    GtkRequisition *tmp_size = NULL;
+    GtkBorder *tmp_spacing = NULL;
+
+    if (widget)
+       gtk_widget_style_get (widget,
+                             "indicator_size", &tmp_size,
+                             "indicator_spacing", &tmp_spacing, NULL);
+
+    if (tmp_size)
+       {
+           *indicator_size = *tmp_size;
+           g_free (tmp_size);
+       }
+    else
+       *indicator_size = default_option_indicator_size;
+
+    if (tmp_spacing)
+       {
+           *indicator_spacing = *tmp_spacing;
+           g_free (tmp_spacing);
+       }
+    else
+       *indicator_spacing = default_option_indicator_spacing;
 }
 
-static gboolean is_toolbar_child(GtkWidget * wid)
+static gboolean
+is_toolbar_child (GtkWidget * wid)
 {
-       while(wid)
+    while (wid)
        {
-               if(GTK_IS_TOOLBAR(wid) || GTK_IS_HANDLE_BOX(wid))
-                       return TRUE;
-               else
-                       wid = wid->parent;
+           if (GTK_IS_TOOLBAR (wid) || GTK_IS_HANDLE_BOX (wid))
+               return TRUE;
+           else
+               wid = wid->parent;
        }
 
-       return FALSE;
+    return FALSE;
 }
 
 static void
-draw_box (GtkStyle      *style,
-         GdkWindow     *window,
-         GtkStateType   state_type,
-         GtkShadowType  shadow_type,
-         GdkRectangle  *area,
-         GtkWidget     *widget,
-         const gchar   *detail,
-         gint           x,
-         gint           y,
-         gint           width,
-         gint           height)
+draw_box (GtkStyle * style,
+         GdkWindow * window,
+         GtkStateType state_type,
+         GtkShadowType shadow_type,
+         GdkRectangle * area,
+         GtkWidget * widget,
+         const gchar * detail, gint x, gint y, gint width, gint height)
 {
-  if (detail &&
-      (!strcmp (detail, "button") ||
-       !strcmp (detail, "buttondefault")))
-    {
-      if (GTK_IS_TREE_VIEW (widget->parent) || GTK_IS_CLIST (widget->parent))
-        {
-          if (xp_theme_draw(window, XP_THEME_ELEMENT_LIST_HEADER, style, x, y,
-                            width, height, state_type, area))
-            return;
-        }
-      else if (is_toolbar_child (widget->parent))
-      {
-                   if (xp_theme_draw(window, XP_THEME_ELEMENT_TOOLBAR_BUTTON, style, x, y,
-                                             width, height, state_type, area))
-               return;
-         }
-      else
-        {
-          gboolean is_default = !strcmp (detail, "buttondefault");
-          if (xp_theme_draw(window, is_default ? XP_THEME_ELEMENT_DEFAULT_BUTTON
-                            : XP_THEME_ELEMENT_BUTTON, style, x, y,
-                            width, height, state_type, area))
-            return;
-        }
-    }
-  else if (detail && !strcmp (detail, "spinbutton"))
-    {
-      if (xp_theme_is_drawable(XP_THEME_ELEMENT_SPIN_BUTTON_UP))
-        {
-          return;
-        }
-    }
-  else if (detail && (!strcmp (detail, "spinbutton_up")
-                      || !strcmp (detail, "spinbutton_down")))
-    {
-      if (xp_theme_draw(window,
-                        (! strcmp (detail, "spinbutton_up"))
-                        ? XP_THEME_ELEMENT_SPIN_BUTTON_UP
-                        : XP_THEME_ELEMENT_SPIN_BUTTON_DOWN,
-                        style, x, y, width, height, state_type, area))
-        {
-          return;
-        }
-    }
-  else if (detail && !strcmp (detail, "slider"))
-    {
-      if (GTK_IS_SCROLLBAR(widget))
-        {
-          GtkScrollbar * scrollbar = GTK_SCROLLBAR(widget);
-          gboolean is_v = GTK_IS_VSCROLLBAR(widget);
-
-          if (xp_theme_draw(window,
-                            is_v
-                            ? XP_THEME_ELEMENT_SCROLLBAR_V
-                            : XP_THEME_ELEMENT_SCROLLBAR_H,
-                            style, x, y, width, height, state_type, area))
-            {
-             XpThemeElement gripper = (is_v ? XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_V : XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_H);
-
-             /* Do not display grippers on tiny scroll bars, the limit imposed
-                is rather arbitrary, perhaps we can fetch the gripper geometry
-                from somewhere and use that... */
-             if ((gripper == XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_H && width < 16)
-                 || (gripper == XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_V && height < 16))
+    if (detail &&
+       (!strcmp (detail, "button") || !strcmp (detail, "buttondefault")))
+       {
+           if (GTK_IS_TREE_VIEW (widget->parent)
+               || GTK_IS_CLIST (widget->parent))
+               {
+                   if (xp_theme_draw
+                       (window, XP_THEME_ELEMENT_LIST_HEADER, style, x, y,
+                        width, height, state_type, area))
+                       return;
+               }
+           else if (is_toolbar_child (widget->parent))
                {
-                 return;
+                   if (xp_theme_draw
+                       (window, XP_THEME_ELEMENT_TOOLBAR_BUTTON, style, x, y,
+                        width, height, state_type, area))
+                       return;
                }
+           else
+               {
+                   gboolean is_default = !strcmp (detail, "buttondefault");
 
-              xp_theme_draw(window, gripper, style, x, y, width, height, state_type, area);
-              return;
-            }
-          else
-          {
-            if (scrollbar->range.adjustment->page_size >= (scrollbar->range.adjustment->upper-scrollbar->range.adjustment->lower))
-              return;
-          }
-        }
-    }
-  else if (detail && !strcmp (detail, "bar"))
-    {
-      if (widget && GTK_IS_PROGRESS_BAR (widget))
-        {
-          GtkProgressBar *progress_bar = GTK_PROGRESS_BAR(widget);
-          XpThemeElement xp_progress_bar = map_gtk_progress_bar_to_xp (progress_bar, FALSE);
-          if (xp_theme_draw (window, xp_progress_bar,
-                             style, x, y, width, height, state_type, area))
-            {
-              return;
-            }
-        }
-    }
-  else if (detail && strcmp (detail, "menuitem") == 0) {
-    shadow_type = GTK_SHADOW_NONE;
-      if (xp_theme_draw (window, XP_THEME_ELEMENT_MENU_ITEM, style, x, y, width, height, state_type, area))
-        {
-               return;
-        }
-  }
-  else if (detail && !strcmp (detail, "trough"))
-    {
-      if (widget && GTK_IS_PROGRESS_BAR (widget))
-        {
-          GtkProgressBar *progress_bar = GTK_PROGRESS_BAR(widget);
-          XpThemeElement xp_progress_bar = map_gtk_progress_bar_to_xp (progress_bar, TRUE);
-          if (xp_theme_draw (window, xp_progress_bar,
-                             style, x, y, width, height, state_type, area))
-            {
-              return;
-            }
-          else
-            {
-              /* Blank in classic Windows */
-            }
-        }
-      else if (widget && GTK_IS_SCROLLBAR(widget))
-        {
-          gboolean is_vertical = GTK_IS_VSCROLLBAR(widget);
-
-          if (xp_theme_draw(window,
-                               is_vertical
-                               ? XP_THEME_ELEMENT_TROUGH_V
-                               : XP_THEME_ELEMENT_TROUGH_H,
-                               style,
-                               x, y, width, height, state_type, area))
-            {
-              return;
-            }
-          else
-            {
-              GdkGCValues gc_values;
-              GdkGC *gc;
-              GdkPixmap *pixmap;
-
-              sanitize_size (window, &width, &height);
-
-              pixmap = gdk_pixmap_new (window, 2, 2, -1);
-
-              gdk_draw_point (pixmap, style->bg_gc[GTK_STATE_NORMAL], 0, 0);
-              gdk_draw_point (pixmap, style->bg_gc[GTK_STATE_NORMAL], 1, 1);
-              gdk_draw_point (pixmap, style->light_gc[GTK_STATE_NORMAL], 1, 0);
-              gdk_draw_point (pixmap, style->light_gc[GTK_STATE_NORMAL], 0, 1);
-
-              gc_values.fill = GDK_TILED;
-              gc_values.tile = pixmap;
-              gc_values.ts_x_origin = x;
-              gc_values.ts_y_origin = y;
-              gc = gdk_gc_new_with_values (window, &gc_values,
-                                           GDK_GC_TS_X_ORIGIN | GDK_GC_TS_Y_ORIGIN | GDK_GC_FILL | GDK_GC_TILE);
-
-              if (area)
-                gdk_gc_set_clip_rectangle (gc, area);
-
-              gdk_draw_rectangle (window, gc, TRUE, x, y, width, height);
-
-              g_object_unref (gc);
-              g_object_unref (pixmap);
-
-              return;
-            }
-        }
-      else if (widget && GTK_IS_SCALE(widget))
+                   if (xp_theme_draw
+                       (window,
+                        is_default ? XP_THEME_ELEMENT_DEFAULT_BUTTON :
+                        XP_THEME_ELEMENT_BUTTON, style, x, y, width, height,
+                        state_type, area))
+                       return;
+               }
+       }
+    else if (detail && !strcmp (detail, "spinbutton"))
        {
-         gboolean is_vertical = GTK_IS_VSCALE(widget);
-
-         if(!xp_theme_is_active ()) {
-                 parent_class->draw_box (style, window, state_type, GTK_SHADOW_NONE, area,
-                                 widget, detail, x, y, width, height);
-         }
-
-         if(is_vertical) {
-           if(xp_theme_draw(window, XP_THEME_ELEMENT_SCALE_TROUGH_V, style, (2 * x + width)/2, y, 2, height, state_type, area))
-               return;
-
-               parent_class->draw_box(style, window, state_type, GTK_SHADOW_ETCHED_IN, area, NULL, NULL, (2 * x + width)/2, y, 1, height);
-      }
-         else {
-           if(xp_theme_draw(window, XP_THEME_ELEMENT_SCALE_TROUGH_H, style, x, (2 * y + height)/2, width, 2, state_type, area))
-               return;
-
-               parent_class->draw_box(style, window, state_type, GTK_SHADOW_ETCHED_IN, area, NULL, NULL, x, (2 * y + height)/2, width, 1);
-      }
-         return;
+           if (xp_theme_is_drawable (XP_THEME_ELEMENT_SPIN_BUTTON_UP))
+               {
+                   return;
+               }
        }
-    }
-  else if (detail && strcmp (detail, "optionmenu") == 0)
-    {
-      if (xp_theme_draw(window, XP_THEME_ELEMENT_EDIT_TEXT,
-                        style, x, y, width, height, state_type, area))
-        {
-          return;
-        }
-    }
-  else if (detail && (strcmp (detail, "vscrollbar") == 0 || strcmp (detail, "hscrollbar") == 0))
-  {
-       GtkScrollbar * scrollbar = GTK_SCROLLBAR(widget);
-         if (shadow_type == GTK_SHADOW_IN)
-               shadow_type = GTK_SHADOW_ETCHED_IN;
-       if (scrollbar->range.adjustment->page_size >= (scrollbar->range.adjustment->upper-scrollbar->range.adjustment->lower))
-           shadow_type = GTK_SHADOW_OUT;
-  }
-  else if (detail && (strcmp (detail, "handlebox_bin") == 0 || strcmp (detail, "toolbar") == 0 ||
-                       strcmp (detail, "menubar") == 0))
-  {
-      if (xp_theme_draw(window, XP_THEME_ELEMENT_REBAR,
-                        style, x, y, width, height, state_type, area))
-        {
-          return;
-        }
-  }
-  else if (detail &&
-          (!strcmp(detail, "handlebox"))) /* grip */
-    {
-    }
-  else
-  {
-        const gchar * name = gtk_widget_get_name (widget);
-
-         if (name && !strcmp (name, "gtk-tooltips")) {
-        if (xp_theme_draw (window, XP_THEME_ELEMENT_TOOLTIP, style, x, y, width, height, state_type, area))
-          {
-                       return;
-           }
-               else {
-               HBRUSH brush;
-                       gint xoff, yoff;
-                       GdkDrawable *drawable;
-                       RECT rect;
-               HDC hdc;
-
-                       if (!GDK_IS_WINDOW(window))
-               {
-                       xoff = 0;
-                       yoff = 0;
-                       drawable = window;
-               }
-                       else
-                       {
-                       gdk_window_get_internal_paint_info(window, &drawable, &xoff, &yoff);
-                       }
-
-                       rect.left = x - xoff;
-                       rect.top = y - yoff;
-                       rect.right = rect.left + width;
-                       rect.bottom = rect.top + height;
-
-                       hdc = gdk_win32_hdc_get(window, style->dark_gc[state_type], 0);
-               brush = GetSysColorBrush(COLOR_3DDKSHADOW);
-                       if (brush)
-                       FrameRect(hdc, &rect, brush);
-                       InflateRect(&rect, -1, -1);
-                       FillRect(hdc, &rect, (HBRUSH) (COLOR_INFOBK+1));
-
-                       return;
+    else if (detail && (!strcmp (detail, "spinbutton_up")
+                       || !strcmp (detail, "spinbutton_down")))
+       {
+           if (xp_theme_draw (window,
+                              (!strcmp (detail, "spinbutton_up"))
+                              ? XP_THEME_ELEMENT_SPIN_BUTTON_UP
+                              : XP_THEME_ELEMENT_SPIN_BUTTON_DOWN,
+                              style, x, y, width, height, state_type, area))
+               {
+                   return;
                }
+       }
+    else if (detail && !strcmp (detail, "slider"))
+       {
+           if (GTK_IS_SCROLLBAR (widget))
+               {
+                   GtkScrollbar *scrollbar = GTK_SCROLLBAR (widget);
+                   gboolean is_v = GTK_IS_VSCROLLBAR (widget);
+
+                   if (xp_theme_draw (window,
+                                      is_v
+                                      ? XP_THEME_ELEMENT_SCROLLBAR_V
+                                      : XP_THEME_ELEMENT_SCROLLBAR_H,
+                                      style, x, y, width, height, state_type,
+                                      area))
+                       {
+                           XpThemeElement gripper =
+                               (is_v ? XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_V :
+                                XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_H);
+
+                           /* Do not display grippers on tiny scroll bars,
+                              the limit imposed is rather arbitrary, perhaps 
+                              we can fetch the gripper geometry from
+                              somewhere and use that... */
+                           if ((gripper ==
+                                XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_H
+                                && width < 16)
+                               || (gripper ==
+                                   XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_V
+                                   && height < 16))
+                               {
+                                   return;
+                               }
+
+                           xp_theme_draw (window, gripper, style, x, y,
+                                          width, height, state_type, area);
+                           return;
+                       }
+                   else
+                       {
+                           if (scrollbar->range.adjustment->page_size >=
+                               (scrollbar->range.adjustment->upper -
+                                scrollbar->range.adjustment->lower))
+                               return;
+                       }
+               }
+       }
+    else if (detail && !strcmp (detail, "bar"))
+       {
+           if (widget && GTK_IS_PROGRESS_BAR (widget))
+               {
+                   GtkProgressBar *progress_bar = GTK_PROGRESS_BAR (widget);
+                   XpThemeElement xp_progress_bar =
+                       map_gtk_progress_bar_to_xp (progress_bar, FALSE);
+                   if (xp_theme_draw
+                       (window, xp_progress_bar, style, x, y, width, height,
+                        state_type, area))
+                       {
+                           return;
+                       }
+               }
+       }
+    else if (detail && strcmp (detail, "menuitem") == 0)
+       {
+           shadow_type = GTK_SHADOW_NONE;
+           if (xp_theme_draw
+               (window, XP_THEME_ELEMENT_MENU_ITEM, style, x, y, width,
+                height, state_type, area))
+               {
+                   return;
+               }
+       }
+    else if (detail && !strcmp (detail, "trough"))
+       {
+           if (widget && GTK_IS_PROGRESS_BAR (widget))
+               {
+                   GtkProgressBar *progress_bar = GTK_PROGRESS_BAR (widget);
+                   XpThemeElement xp_progress_bar =
+                       map_gtk_progress_bar_to_xp (progress_bar, TRUE);
+                   if (xp_theme_draw
+                       (window, xp_progress_bar, style, x, y, width, height,
+                        state_type, area))
+                       {
+                           return;
+                       }
+                   else
+                       {
+                           /* Blank in classic Windows */
+                       }
+               }
+           else if (widget && GTK_IS_SCROLLBAR (widget))
+               {
+                   gboolean is_vertical = GTK_IS_VSCROLLBAR (widget);
+
+                   if (xp_theme_draw (window,
+                                      is_vertical
+                                      ? XP_THEME_ELEMENT_TROUGH_V
+                                      : XP_THEME_ELEMENT_TROUGH_H,
+                                      style,
+                                      x, y, width, height, state_type, area))
+                       {
+                           return;
+                       }
+                   else
+                       {
+                           GdkGCValues gc_values;
+                           GdkGC *gc;
+                           GdkPixmap *pixmap;
+
+                           sanitize_size (window, &width, &height);
+
+                           pixmap = gdk_pixmap_new (window, 2, 2, -1);
+
+                           gdk_draw_point (pixmap,
+                                           style->bg_gc[GTK_STATE_NORMAL], 0,
+                                           0);
+                           gdk_draw_point (pixmap,
+                                           style->bg_gc[GTK_STATE_NORMAL], 1,
+                                           1);
+                           gdk_draw_point (pixmap,
+                                           style->light_gc[GTK_STATE_NORMAL],
+                                           1, 0);
+                           gdk_draw_point (pixmap,
+                                           style->light_gc[GTK_STATE_NORMAL],
+                                           0, 1);
+
+                           gc_values.fill = GDK_TILED;
+                           gc_values.tile = pixmap;
+                           gc_values.ts_x_origin = x;
+                           gc_values.ts_y_origin = y;
+                           gc = gdk_gc_new_with_values (window, &gc_values,
+                                                        GDK_GC_TS_X_ORIGIN |
+                                                        GDK_GC_TS_Y_ORIGIN |
+                                                        GDK_GC_FILL |
+                                                        GDK_GC_TILE);
+
+                           if (area)
+                               gdk_gc_set_clip_rectangle (gc, area);
+
+                           gdk_draw_rectangle (window, gc, TRUE, x, y, width,
+                                               height);
+
+                           g_object_unref (gc);
+                           g_object_unref (pixmap);
+
+                           return;
+                       }
+               }
+           else if (widget && GTK_IS_SCALE (widget))
+               {
+                   gboolean is_vertical = GTK_IS_VSCALE (widget);
+
+                   if (!xp_theme_is_active ())
+                       {
+                           parent_class->draw_box (style, window, state_type,
+                                                   GTK_SHADOW_NONE, area,
+                                                   widget, detail, x, y,
+                                                   width, height);
+                       }
+
+                   if (is_vertical)
+                       {
+                           if (xp_theme_draw
+                               (window, XP_THEME_ELEMENT_SCALE_TROUGH_V,
+                                style, (2 * x + width) / 2, y, 2, height,
+                                state_type, area))
+                               return;
 
-               }
-  }
-
-  parent_class->draw_box (style, window, state_type, shadow_type, area,
-                         widget, detail, x, y, width, height);
+                           parent_class->draw_box (style, window, state_type,
+                                                   GTK_SHADOW_ETCHED_IN,
+                                                   area, NULL, NULL,
+                                                   (2 * x + width) / 2, y, 1,
+                                                   height);
+                       }
+                   else
+                       {
+                           if (xp_theme_draw
+                               (window, XP_THEME_ELEMENT_SCALE_TROUGH_H,
+                                style, x, (2 * y + height) / 2, width, 2,
+                                state_type, area))
+                               return;
 
-  if (detail && strcmp (detail, "optionmenu") == 0)
-    {
-      GtkRequisition indicator_size;
-      GtkBorder indicator_spacing;
-      gint vline_x;
+                           parent_class->draw_box (style, window, state_type,
+                                                   GTK_SHADOW_ETCHED_IN,
+                                                   area, NULL, NULL, x,
+                                                   (2 * y + height) / 2,
+                                                   width, 1);
+                       }
+                   return;
+               }
+       }
+    else if (detail && strcmp (detail, "optionmenu") == 0)
+       {
+           if (xp_theme_draw (window, XP_THEME_ELEMENT_EDIT_TEXT,
+                              style, x, y, width, height, state_type, area))
+               {
+                   return;
+               }
+       }
+    else if (detail
+            && (strcmp (detail, "vscrollbar") == 0
+                || strcmp (detail, "hscrollbar") == 0))
+       {
+           GtkScrollbar *scrollbar = GTK_SCROLLBAR (widget);
+
+           if (shadow_type == GTK_SHADOW_IN)
+               shadow_type = GTK_SHADOW_ETCHED_IN;
+           if (scrollbar->range.adjustment->page_size >=
+               (scrollbar->range.adjustment->upper -
+                scrollbar->range.adjustment->lower))
+               shadow_type = GTK_SHADOW_OUT;
+       }
+    else if (detail
+            && (strcmp (detail, "handlebox_bin") == 0
+                || strcmp (detail, "toolbar") == 0
+                || strcmp (detail, "menubar") == 0))
+       {
+           if (xp_theme_draw (window, XP_THEME_ELEMENT_REBAR,
+                              style, x, y, width, height, state_type, area))
+               {
+                   return;
+               }
+       }
+    else if (detail && (!strcmp (detail, "handlebox")))        /* grip */
+       {
+       }
+    else
+       {
+           const gchar *name = gtk_widget_get_name (widget);
 
-      option_menu_get_props (widget, &indicator_size, &indicator_spacing);
+           if (name && !strcmp (name, "gtk-tooltips"))
+               {
+                   if (xp_theme_draw
+                       (window, XP_THEME_ELEMENT_TOOLTIP, style, x, y, width,
+                        height, state_type, area))
+                       {
+                           return;
+                       }
+                   else
+                       {
+                           HBRUSH brush;
+                           gint xoff, yoff;
+                           GdkDrawable *drawable;
+                           RECT rect;
+                           HDC hdc;
+
+                           if (!GDK_IS_WINDOW (window))
+                               {
+                                   xoff = 0;
+                                   yoff = 0;
+                                   drawable = window;
+                               }
+                           else
+                               {
+                                   gdk_window_get_internal_paint_info
+                                       (window, &drawable, &xoff, &yoff);
+                               }
+
+                           rect.left = x - xoff;
+                           rect.top = y - yoff;
+                           rect.right = rect.left + width;
+                           rect.bottom = rect.top + height;
+
+                           hdc =
+                               gdk_win32_hdc_get (window,
+                                                  style->dark_gc[state_type],
+                                                  0);
+                           brush = GetSysColorBrush (COLOR_3DDKSHADOW);
+                           if (brush)
+                               FrameRect (hdc, &rect, brush);
+                           InflateRect (&rect, -1, -1);
+                           FillRect (hdc, &rect,
+                                     (HBRUSH) (COLOR_INFOBK + 1));
+
+                           return;
+                       }
 
-      sanitize_size (window, &width, &height);
+               }
+       }
 
-      if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
-       vline_x = x + indicator_size.width + indicator_spacing.left + indicator_spacing.right;
-      else
-       vline_x = x + width - (indicator_size.width + indicator_spacing.left + indicator_spacing.right) - style->xthickness;
+    parent_class->draw_box (style, window, state_type, shadow_type, area,
+                           widget, detail, x, y, width, height);
 
-      parent_class->draw_vline (style, window, state_type, area, widget,
-                               detail,
-                               y + style->ythickness + 1,
-                               y + height - style->ythickness - 3,
-                               vline_x);
-    }
+    if (detail && strcmp (detail, "optionmenu") == 0)
+       {
+           GtkRequisition indicator_size;
+           GtkBorder indicator_spacing;
+           gint vline_x;
+
+           option_menu_get_props (widget, &indicator_size,
+                                  &indicator_spacing);
+
+           sanitize_size (window, &width, &height);
+
+           if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+               vline_x =
+                   x + indicator_size.width + indicator_spacing.left +
+                   indicator_spacing.right;
+           else
+               vline_x =
+                   x + width - (indicator_size.width +
+                                indicator_spacing.left +
+                                indicator_spacing.right) - style->xthickness;
+
+           parent_class->draw_vline (style, window, state_type, area, widget,
+                                     detail,
+                                     y + style->ythickness + 1,
+                                     y + height - style->ythickness - 3,
+                                     vline_x);
+       }
 }
 
 static void
-draw_tab (GtkStyle      *style,
-         GdkWindow     *window,
-         GtkStateType   state,
-         GtkShadowType  shadow,
-         GdkRectangle  *area,
-         GtkWidget     *widget,
-         const gchar   *detail,
-         gint           x,
-         gint           y,
-         gint           width,
-         gint           height)
+draw_tab (GtkStyle * style,
+         GdkWindow * window,
+         GtkStateType state,
+         GtkShadowType shadow,
+         GdkRectangle * area,
+         GtkWidget * widget,
+         const gchar * detail, gint x, gint y, gint width, gint height)
 {
-  GtkRequisition indicator_size;
-  GtkBorder indicator_spacing;
+    GtkRequisition indicator_size;
+    GtkBorder indicator_spacing;
 
-  gint arrow_height;
+    gint arrow_height;
 
-  g_return_if_fail (style != NULL);
-  g_return_if_fail (window != NULL);
+    g_return_if_fail (style != NULL);
+    g_return_if_fail (window != NULL);
 
-  if (detail && ! strcmp (detail, "optionmenutab"))
-    {
-      if (xp_theme_draw(window, XP_THEME_ELEMENT_COMBOBUTTON,
-                        style, x-5, widget->allocation.y+1,
-                        width+10, widget->allocation.height-2, state, area))
-        {
-          return;
-        }
-    }
+    if (detail && !strcmp (detail, "optionmenutab"))
+       {
+           if (xp_theme_draw (window, XP_THEME_ELEMENT_COMBOBUTTON,
+                              style, x - 5, widget->allocation.y + 1,
+                              width + 10, widget->allocation.height - 2,
+                              state, area))
+               {
+                   return;
+               }
+       }
 
-  if (widget)
-    gtk_widget_style_get (widget, "indicator_size", &indicator_size, NULL);
+    if (widget)
+       gtk_widget_style_get (widget, "indicator_size", &indicator_size,
+                             NULL);
 
-  option_menu_get_props (widget, &indicator_size, &indicator_spacing);
+    option_menu_get_props (widget, &indicator_size, &indicator_spacing);
 
-  x += (width - indicator_size.width) / 2;
-  arrow_height = (indicator_size.width + 1) / 2;
+    x += (width - indicator_size.width) / 2;
+    arrow_height = (indicator_size.width + 1) / 2;
 
-  y += (height - arrow_height) / 2;
+    y += (height - arrow_height) / 2;
 
-  draw_varrow (window, style->black_gc, shadow, area, GTK_ARROW_DOWN,
-              x, y, indicator_size.width, arrow_height);
+    draw_varrow (window, style->black_gc, shadow, area, GTK_ARROW_DOWN,
+                x, y, indicator_size.width, arrow_height);
 }
 
 /* this is an undefined magic value that, according to the mozilla folks,
@@ -1713,363 +1856,512 @@ draw_tab (GtkStyle      *style,
 #define XP_EDGE_SIZE 2
 
 static void
-draw_extension(GtkStyle *style,
-               GdkWindow *window,
-               GtkStateType state_type,
-               GtkShadowType shadow_type,
-               GdkRectangle *area,
-               GtkWidget *widget,
-               const gchar *detail,
-               gint x,
-               gint y,
-               gint width,
-               gint height,
-               GtkPositionType gap_side)
+draw_extension (GtkStyle * style,
+               GdkWindow * window,
+               GtkStateType state_type,
+               GtkShadowType shadow_type,
+               GdkRectangle * area,
+               GtkWidget * widget,
+               const gchar * detail,
+               gint x,
+               gint y, gint width, gint height, GtkPositionType gap_side)
 {
-  if (GTK_IS_NOTEBOOK(widget) && detail && !strcmp(detail, "tab"))
-    {
-      GtkNotebook *notebook = GTK_NOTEBOOK(widget);
-      gint x2, y2, w2, h2;
-
-      x2 = x; y2 = y; w2 = width; h2 = height;
-      if (gap_side == GTK_POS_TOP && state_type == GTK_STATE_NORMAL) {
-          /*h2 += XP_EDGE_SIZE;*/
-         }
-      else if (gap_side == GTK_POS_BOTTOM && state_type == GTK_STATE_NORMAL) {
-          /*h2 += XP_EDGE_SIZE;*/
-         }
-      else if (gap_side == GTK_POS_LEFT && state_type == GTK_STATE_NORMAL) {
-          x2 += 1;
-          w2 -= XP_EDGE_SIZE;
-         }
-      else if (gap_side == GTK_POS_RIGHT && state_type == GTK_STATE_NORMAL) {
-          w2 -= (XP_EDGE_SIZE + 1);
-         }
-
-      if (xp_theme_draw
-          (window, gtk_notebook_get_current_page(notebook)==0
-           ? XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE
-           : XP_THEME_ELEMENT_TAB_ITEM,
-           style, x2, y2, w2, h2, state_type, area))
-        {
-          return;
-        }
-    }
-  parent_class->draw_extension
-    (style, window, state_type, shadow_type, area, widget, detail,
-        x, y, width, height, gap_side);
-}
+    if (GTK_IS_NOTEBOOK (widget) && detail && !strcmp (detail, "tab"))
+       {
+           GtkNotebook *notebook = GTK_NOTEBOOK (widget);
+           gint x2, y2, w2, h2;
+
+           x2 = x;
+           y2 = y;
+           w2 = width;
+           h2 = height;
+           if (gap_side == GTK_POS_TOP && state_type == GTK_STATE_NORMAL)
+               {
+                   /* h2 += XP_EDGE_SIZE; */
+               }
+           else if (gap_side == GTK_POS_BOTTOM
+                    && state_type == GTK_STATE_NORMAL)
+               {
+                   /* h2 += XP_EDGE_SIZE; */
+               }
+           else if (gap_side == GTK_POS_LEFT
+                    && state_type == GTK_STATE_NORMAL)
+               {
+                   x2 += 1;
+                   w2 -= XP_EDGE_SIZE;
+               }
+           else if (gap_side == GTK_POS_RIGHT
+                    && state_type == GTK_STATE_NORMAL)
+               {
+                   w2 -= (XP_EDGE_SIZE + 1);
+               }
 
-static void
-draw_box_gap (GtkStyle *style, GdkWindow *window, GtkStateType state_type,
-              GtkShadowType shadow_type, GdkRectangle *area,
-              GtkWidget *widget, const gchar *detail, gint x,
-              gint y, gint width, gint height, GtkPositionType gap_side,
-              gint gap_x, gint gap_width)
-{
-  if (GTK_IS_NOTEBOOK(widget) && detail && !strcmp(detail, "notebook"))
-    {
-      /* FIXME: pos != TOP to be implemented */
-      if (gap_side == GTK_POS_TOP && xp_theme_draw(window, XP_THEME_ELEMENT_TAB_PANE, style,  x, y, width, height,
-                       state_type, area))
-        {
-          return;
-        }
-    }
-  parent_class->draw_box_gap(style, window, state_type, shadow_type,
-                             area, widget, detail, x, y, width, height,
-                             gap_side, gap_x, gap_width);
+           if (xp_theme_draw
+               (window, gtk_notebook_get_current_page (notebook) == 0
+                ? XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE
+                : XP_THEME_ELEMENT_TAB_ITEM,
+                style, x2, y2, w2, h2, state_type, area))
+               {
+                   return;
+               }
+       }
+    parent_class->draw_extension
+       (style, window, state_type, shadow_type, area, widget, detail,
+        x, y, width, height, gap_side);
 }
 
 static void
-draw_flat_box (GtkStyle *style, GdkWindow *window,
-               GtkStateType state_type, GtkShadowType shadow_type,
-               GdkRectangle *area, GtkWidget *widget,
-               const gchar *detail, gint x, gint y,
-               gint width, gint height)
+draw_box_gap (GtkStyle * style, GdkWindow * window, GtkStateType state_type,
+             GtkShadowType shadow_type, GdkRectangle * area,
+             GtkWidget * widget, const gchar * detail, gint x,
+             gint y, gint width, gint height, GtkPositionType gap_side,
+             gint gap_x, gint gap_width)
 {
-  if (detail && ! strcmp (detail, "checkbutton"))
-    {
-      if (state_type == GTK_STATE_PRELIGHT)
-        {
-          return;
-        }
-    }
-
-  parent_class->draw_flat_box(style, window, state_type, shadow_type,
-                              area, widget, detail, x, y, width, height);
+    if (GTK_IS_NOTEBOOK (widget) && detail && !strcmp (detail, "notebook"))
+       {
+           /* FIXME: pos != TOP to be implemented */
+           if (gap_side == GTK_POS_TOP
+               && xp_theme_draw (window, XP_THEME_ELEMENT_TAB_PANE, style, x,
+                                 y, width, height, state_type, area))
+               {
+                   return;
+               }
+       }
+    parent_class->draw_box_gap (style, window, state_type, shadow_type,
+                               area, widget, detail, x, y, width, height,
+                               gap_side, gap_x, gap_width);
 }
 
 static void
-draw_shadow (GtkStyle      *style,
-             GdkWindow     *window,
-             GtkStateType   state_type,
-             GtkShadowType  shadow_type,
-             GdkRectangle  *area,
-             GtkWidget     *widget,
-             const gchar   *detail,
-             gint           x,
-             gint           y,
-             gint           width,
-             gint           height)
+draw_flat_box (GtkStyle * style, GdkWindow * window,
+              GtkStateType state_type, GtkShadowType shadow_type,
+              GdkRectangle * area, GtkWidget * widget,
+              const gchar * detail, gint x, gint y, gint width, gint height)
 {
-  if(detail && ! strcmp(detail, "entry"))
-    {
-      if (xp_theme_draw(window, XP_THEME_ELEMENT_EDIT_TEXT, style,
-                        x, y, width, height, state_type, area))
-        {
-          return;
-        }
-    }
-  parent_class->draw_shadow (style, window, state_type, shadow_type, area, widget,
-                             detail, x, y, width, height);
+    if (detail && !strcmp (detail, "checkbutton"))
+       {
+           if (state_type == GTK_STATE_PRELIGHT)
+               {
+                   return;
+               }
+       }
+
+    parent_class->draw_flat_box (style, window, state_type, shadow_type,
+                                area, widget, detail, x, y, width, height);
 }
 
 static void
-draw_hline (GtkStyle           *style,
-           GdkWindow           *window,
-           GtkStateType         state_type,
-           GdkRectangle        *area,
-           GtkWidget           *widget,
-           const gchar         *detail,
-           gint                 x1,
-           gint                 x2,
-           gint                 y)
+draw_shadow (GtkStyle * style,
+            GdkWindow * window,
+            GtkStateType state_type,
+            GtkShadowType shadow_type,
+            GdkRectangle * area,
+            GtkWidget * widget,
+            const gchar * detail, gint x, gint y, gint width, gint height)
 {
-#if 0
-  if (detail && !strcmp(detail, "menuitem")) {
-         if (xp_theme_draw(window, XP_THEME_ELEMENT_MENU_SEPARATOR, style,
-                       x1, y, x2, style->ythickness, state_type, area)) {
-                       return;
-         }
-  } else if (detail && !strcmp(detail, "toolbar")) {
-         if (xp_theme_draw(window, XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_H, style,
-                       x1, y, x2, style->ythickness, state_type, area)) {
-                       return;
-         }
-  }
+    gboolean is_handlebox_grippie = (detail && !strcmp (detail, "handlebox"));
 
-  if(xp_theme_draw(window, XP_THEME_ELEMENT_LINE_H, style, x1, y, x2, style->ythickness, state_type, area))
-       return;
-#endif
+    if (detail && !strcmp (detail, "entry"))
+       {
+           if (xp_theme_draw (window, XP_THEME_ELEMENT_EDIT_TEXT, style,
+                              x, y, width, height, state_type, area))
+               {
+                   return;
+               }
+       }
+
+    if (is_handlebox_grippie
+       || (widget && (shadow_type == GTK_SHADOW_ETCHED_IN)
+           && (GTK_IS_MENU_BAR (widget) || GTK_IS_TOOLBAR (widget)
+               || GTK_IS_HANDLE_BOX (widget))))
+       {
+           GdkGC *gc1 = NULL;
+           GdkGC *gc2 = NULL;
+           gint thickness_light;
+           gint thickness_dark;
+           gint i;
+
+           gc1 = style->light_gc[state_type];
+           gc2 = style->dark_gc[state_type];
+
+           sanitize_size (window, &width, &height);
+
+           if (area)
+               {
+                   gdk_gc_set_clip_rectangle (gc1, area);
+                   gdk_gc_set_clip_rectangle (gc2, area);
+                   if (shadow_type == GTK_SHADOW_IN ||
+                       shadow_type == GTK_SHADOW_OUT)
+                       {
+                           gdk_gc_set_clip_rectangle (style->black_gc, area);
+                           gdk_gc_set_clip_rectangle (style->
+                                                      bg_gc[state_type],
+                                                      area);
+                       }
+               }
+
+           if (style->xthickness > 0)
+               {
+                   if (style->xthickness > 1)
+                       {
+                           thickness_light = 1;
+                           thickness_dark = 1;
+
+                           for (i = 0; i < thickness_dark; i++)
+                               {
+                                   if (!is_handlebox_grippie)
+                                       gdk_draw_line (window, gc1,
+                                                      x + width - i - 1,
+                                                      y + i,
+                                                      x + width - i - 1,
+                                                      y + height - i - 1);
+                                   if (is_handlebox_grippie
+                                       || (widget
+                                           && GTK_IS_MENU_BAR (widget)))
+                                       gdk_draw_line (window, gc2, x + i,
+                                                      y + i, x + i,
+                                                      y + height - i - 1);
+                               }
+
+                           for (i = 0; i < thickness_light; i++)
+                               {
+                                   if (is_handlebox_grippie
+                                       || (widget
+                                           && GTK_IS_MENU_BAR (widget)))
+                                       gdk_draw_line (window, gc1,
+                                                      x + thickness_dark + i,
+                                                      y + thickness_dark + i,
+                                                      x + thickness_dark + i,
+                                                      y + height -
+                                                      thickness_dark - i -
+                                                      1);
+                                   if (!is_handlebox_grippie)
+                                       gdk_draw_line (window, gc2,
+                                                      x + width -
+                                                      thickness_light - i -
+                                                      1,
+                                                      y + thickness_dark + i,
+                                                      x + width -
+                                                      thickness_light - i -
+                                                      1,
+                                                      y + height -
+                                                      thickness_light - 1);
+                               }
+                       }
+                   else
+                       {
+                           gdk_draw_line (window,
+                                          style->dark_gc[state_type],
+                                          x, y, x, y + height);
+                           gdk_draw_line (window,
+                                          style->dark_gc[state_type],
+                                          x + width, y, x + width,
+                                          y + height);
+                       }
+               }
+
+           if (style->ythickness > 0)
+               {
+                   if (style->ythickness > 1)
+                       {
+                           thickness_light = 1;
+                           thickness_dark = 1;
+
+                           for (i = 0; i < thickness_dark; i++)
+                               {
+                                   gdk_draw_line (window, gc1,
+                                                  x + i,
+                                                  y + height - i - 1,
+                                                  x + width - i - 1,
+                                                  y + height - i - 1);
+
+                                   if (widget && GTK_IS_MENU_BAR (widget))
+                                       gdk_draw_line (window, gc2,
+                                                      x + i,
+                                                      y + i,
+                                                      x + width - i - 2,
+                                                      y + i);
+                               }
+
+                           for (i = 0; i < thickness_light; i++)
+                               {
+                                   gdk_draw_line (window, gc2,
+                                                  x + thickness_dark + i,
+                                                  y + height -
+                                                  thickness_light - i - 1,
+                                                  x + width -
+                                                  thickness_light - 1,
+                                                  y + height -
+                                                  thickness_light - i - 1);
+
+                                   if (widget && GTK_IS_MENU_BAR (widget))
+                                       gdk_draw_line (window, gc1,
+                                                      x + thickness_dark + i,
+                                                      y + thickness_dark + i,
+                                                      x + width -
+                                                      thickness_dark - i - 2,
+                                                      y + thickness_dark +
+                                                      i);
+                               }
+                       }
+                   else
+                       {
+                           gdk_draw_line (window,
+                                          style->dark_gc[state_type],
+                                          x, y, x + width, y);
+
+                           gdk_draw_line (window,
+                                          style->dark_gc[state_type],
+                                          x, y + height, x + width,
+                                          y + height);
+
+                       }
+               }
+
+           if (area)
+               {
+                   gdk_gc_set_clip_rectangle (gc1, NULL);
+                   gdk_gc_set_clip_rectangle (gc2, NULL);
+                   if (shadow_type == GTK_SHADOW_IN ||
+                       shadow_type == GTK_SHADOW_OUT)
+                       {
+                           gdk_gc_set_clip_rectangle (style->black_gc, NULL);
+                           gdk_gc_set_clip_rectangle (style->
+                                                      bg_gc[state_type],
+                                                      NULL);
+                       }
+               }
 
-  parent_class->draw_hline (style, window, state_type, area, widget,
-                           detail, x1, x2, y);
+           return;
+       }
+    parent_class->draw_shadow (style, window, state_type, shadow_type, area,
+                              widget, detail, x, y, width, height);
 }
 
 static void
-draw_vline (GtkStyle           *style,
-           GdkWindow           *window,
-           GtkStateType         state_type,
-           GdkRectangle        *area,
-           GtkWidget           *widget,
-           const gchar         *detail,
-           gint                 y1,
-           gint                 y2,
-           gint                 x)
+draw_hline (GtkStyle * style,
+           GdkWindow * window,
+           GtkStateType state_type,
+           GdkRectangle * area,
+           GtkWidget * widget,
+           const gchar * detail, gint x1, gint x2, gint y)
 {
-#if 0
-       if (detail && !strcmp(detail, "toolbar")) {
-         if (xp_theme_draw(window, XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_V, style,
-                       x, y1, style->xthickness, y2, state_type, area)) {
-                       return;
-         }
-       }
-
-  if(xp_theme_draw(window, XP_THEME_ELEMENT_LINE_V, style, x, y1, style->xthickness, y2, state_type, area))
-       return;
-#endif
+    parent_class->draw_hline (style, window, state_type, area, widget,
+                             detail, x1, x2, y);
+}
 
-  parent_class->draw_vline (style, window, state_type, area, widget,
-                           detail, y1, y2, x);
+static void
+draw_vline (GtkStyle * style,
+           GdkWindow * window,
+           GtkStateType state_type,
+           GdkRectangle * area,
+           GtkWidget * widget,
+           const gchar * detail, gint y1, gint y2, gint x)
+{
+    parent_class->draw_vline (style, window, state_type, area, widget,
+                             detail, y1, y2, x);
 }
 
 static void
-draw_slider (GtkStyle *style,
-             GdkWindow *window,
-             GtkStateType state_type,
-             GtkShadowType shadow_type,
-             GdkRectangle *area,
-             GtkWidget *widget,
-             const gchar *detail,
-             gint x,
-             gint y,
-             gint width,
-             gint height,
-             GtkOrientation orientation)
+draw_slider (GtkStyle * style,
+            GdkWindow * window,
+            GtkStateType state_type,
+            GtkShadowType shadow_type,
+            GdkRectangle * area,
+            GtkWidget * widget,
+            const gchar * detail,
+            gint x,
+            gint y, gint width, gint height, GtkOrientation orientation)
 {
-         if(GTK_IS_SCALE(widget) &&
-            xp_theme_draw(window, ((orientation ==  GTK_ORIENTATION_VERTICAL) ? XP_THEME_ELEMENT_SCALE_SLIDER_V : XP_THEME_ELEMENT_SCALE_SLIDER_H), style, x, y, width, height, state_type, area)) {
-                       return;
-               }
+    if (GTK_IS_SCALE (widget) &&
+       xp_theme_draw (window,
+                      ((orientation ==
+                        GTK_ORIENTATION_VERTICAL) ?
+                       XP_THEME_ELEMENT_SCALE_SLIDER_V :
+                       XP_THEME_ELEMENT_SCALE_SLIDER_H), style, x, y, width,
+                      height, state_type, area))
+       {
+           return;
+       }
 
-         parent_class->draw_slider (style, window, state_type, shadow_type, area, widget,
-                                                           detail, x, y, width, height, orientation);
+    parent_class->draw_slider (style, window, state_type, shadow_type, area,
+                              widget, detail, x, y, width, height,
+                              orientation);
 }
 
 static void
-draw_resize_grip (GtkStyle      *style,
-                       GdkWindow     *window,
-                       GtkStateType   state_type,
-                       GdkRectangle  *area,
-                       GtkWidget     *widget,
-                       const gchar   *detail,
-                       GdkWindowEdge  edge,
-                       gint           x,
-                       gint           y,
-                       gint           width,
-                       gint           height)
+draw_resize_grip (GtkStyle * style,
+                 GdkWindow * window,
+                 GtkStateType state_type,
+                 GdkRectangle * area,
+                 GtkWidget * widget,
+                 const gchar * detail,
+                 GdkWindowEdge edge, gint x, gint y, gint width, gint height)
 {
-       if (detail && !strcmp(detail, "statusbar")) {
-               if (xp_theme_draw(window, XP_THEME_ELEMENT_STATUS_GRIPPER, style, x, y, width, height,
-                           state_type, area))
-                       return;
+    if (detail && !strcmp (detail, "statusbar"))
+       {
+           if (xp_theme_draw
+               (window, XP_THEME_ELEMENT_STATUS_GRIPPER, style, x, y, width,
+                height, state_type, area))
+               return;
        }
 
-       parent_class->draw_resize_grip (style, window, state_type, area,
-                                                                       widget, detail, edge, x, y, width, height);
+    parent_class->draw_resize_grip (style, window, state_type, area,
+                                   widget, detail, edge, x, y, width,
+                                   height);
 }
 
 static void
-draw_handle (GtkStyle        *style,
-            GdkWindow       *window,
-            GtkStateType     state_type,
-            GtkShadowType    shadow_type,
-            GdkRectangle    *area,
-            GtkWidget       *widget,
-            const gchar     *detail,
-            gint             x,
-            gint             y,
-            gint             width,
-            gint             height,
-            GtkOrientation   orientation)
+draw_handle (GtkStyle * style,
+            GdkWindow * window,
+            GtkStateType state_type,
+            GtkShadowType shadow_type,
+            GdkRectangle * area,
+            GtkWidget * widget,
+            const gchar * detail,
+            gint x,
+            gint y, gint width, gint height, GtkOrientation orientation)
 {
-  if (is_toolbar_child (widget))
-    {
-      XpThemeElement hndl;
-
-      sanitize_size (window, &width, &height);
-
-      if (orientation == GTK_ORIENTATION_VERTICAL)
-        hndl = XP_THEME_ELEMENT_REBAR_GRIPPER_V;
-      else
-        hndl = XP_THEME_ELEMENT_REBAR_GRIPPER_H;
-
-      if (xp_theme_draw (window, hndl, style, x, y, width, height,
-                         state_type, area))
-        {
-          return;
-        }
-       }
-
-  if (!GTK_IS_PANED(widget)) {
-  gint                xthick, ythick;
-  GdkGC              *light_gc, *dark_gc, *shadow_gc;
-  GdkRectangle        dest;
-
-       sanitize_size (window, &width, &height);
-
-  gtk_paint_box(style, window, state_type, shadow_type, area, widget,
-               detail, x, y, width, height);
-
-  light_gc = style->light_gc[state_type];
-  dark_gc = style->dark_gc[state_type];
-  shadow_gc = style->mid_gc[state_type];
-
-  xthick = style->xthickness;
-  ythick = style->ythickness;
-
-  dest.x = x + xthick;
-  dest.y = y + ythick;
-  dest.width = width - (xthick * 2);
-  dest.height = height - (ythick * 2);
-
-  gdk_gc_set_clip_rectangle(light_gc, &dest);
-  gdk_gc_set_clip_rectangle(dark_gc, &dest);
-  gdk_gc_set_clip_rectangle(shadow_gc, &dest);
-
-  if (dest.width < dest.height)
-    {
-         gdk_draw_line(window, light_gc, dest.x, dest.y, dest.x, dest.height);
-         gdk_draw_line(window, dark_gc, dest.x + (dest.width / 2), dest.y, dest.x + (dest.width / 2), dest.height);
-         gdk_draw_line(window, shadow_gc, dest.x + dest.width, dest.y, dest.x + dest.width, dest.height);
-    }
-  else
-    {
-
-         gdk_draw_line(window, light_gc, dest.x, dest.y, dest.x + dest.width, dest.y);
-         gdk_draw_line(window, dark_gc, dest.x, dest.y + (dest.height / 2), dest.x + dest.width, dest.y + (dest.height / 2));
-         gdk_draw_line(window, shadow_gc, dest.x, dest.y + dest.height, dest.x + dest.width, dest.y + dest.height);
-    }
-
-  gdk_gc_set_clip_rectangle(shadow_gc, NULL);
-  gdk_gc_set_clip_rectangle(light_gc, NULL);
-  gdk_gc_set_clip_rectangle(dark_gc, NULL);
-    }
+    if (is_toolbar_child (widget))
+       {
+           XpThemeElement hndl;
+
+           sanitize_size (window, &width, &height);
+
+           if (orientation == GTK_ORIENTATION_VERTICAL)
+               hndl = XP_THEME_ELEMENT_REBAR_GRIPPER_V;
+           else
+               hndl = XP_THEME_ELEMENT_REBAR_GRIPPER_H;
+
+           if (xp_theme_draw (window, hndl, style, x, y, width, height,
+                              state_type, area))
+               {
+                   return;
+               }
+       }
+
+    if (!GTK_IS_PANED (widget))
+       {
+           gint xthick, ythick;
+           GdkGC *light_gc, *dark_gc, *shadow_gc;
+           GdkRectangle dest;
+
+           sanitize_size (window, &width, &height);
+
+           gtk_paint_box (style, window, state_type, shadow_type, area,
+                          widget, detail, x, y, width, height);
+
+           light_gc = style->light_gc[state_type];
+           dark_gc = style->dark_gc[state_type];
+           shadow_gc = style->mid_gc[state_type];
+
+           xthick = style->xthickness;
+           ythick = style->ythickness;
+
+           dest.x = x + xthick;
+           dest.y = y + ythick;
+           dest.width = width - (xthick * 2);
+           dest.height = height - (ythick * 2);
+
+           if (dest.width < dest.height)
+               dest.x += 2;
+           else
+               dest.y += 2;
+
+           gdk_gc_set_clip_rectangle (light_gc, &dest);
+           gdk_gc_set_clip_rectangle (dark_gc, &dest);
+           gdk_gc_set_clip_rectangle (shadow_gc, &dest);
+
+           if (dest.width < dest.height)
+               {
+                   gdk_draw_line (window, light_gc, dest.x, dest.y, dest.x,
+                                  dest.height);
+                   gdk_draw_line (window, dark_gc, dest.x + (dest.width / 2),
+                                  dest.y, dest.x + (dest.width / 2),
+                                  dest.height);
+                   gdk_draw_line (window, shadow_gc, dest.x + dest.width,
+                                  dest.y, dest.x + dest.width, dest.height);
+               }
+           else
+               {
+                   gdk_draw_line (window, light_gc, dest.x, dest.y,
+                                  dest.x + dest.width, dest.y);
+                   gdk_draw_line (window, dark_gc, dest.x,
+                                  dest.y + (dest.height / 2),
+                                  dest.x + dest.width,
+                                  dest.y + (dest.height / 2));
+                   gdk_draw_line (window, shadow_gc, dest.x,
+                                  dest.y + dest.height, dest.x + dest.width,
+                                  dest.y + dest.height);
+               }
+
+           gdk_gc_set_clip_rectangle (shadow_gc, NULL);
+           gdk_gc_set_clip_rectangle (light_gc, NULL);
+           gdk_gc_set_clip_rectangle (dark_gc, NULL);
+       }
 }
 
 static void
 msw_style_init_from_rc (GtkStyle * style, GtkRcStyle * rc_style)
 {
-  setup_system_font (style);
-  setup_menu_settings (gtk_settings_get_default ());
-  setup_system_styles (style);
-  parent_class->init_from_rc(style, rc_style);
+    setup_system_font (style);
+    setup_menu_settings (gtk_settings_get_default ());
+    setup_system_styles (style);
+    parent_class->init_from_rc (style, rc_style);
 }
 
 static void
-msw_style_class_init (MswStyleClass *klass)
+msw_style_class_init (MswStyleClass * klass)
 {
-  GtkStyleClass *style_class = GTK_STYLE_CLASS (klass);
-
-  parent_class = g_type_class_peek_parent (klass);
-
-  style_class->init_from_rc = msw_style_init_from_rc;
-  style_class->draw_arrow = draw_arrow;
-  style_class->draw_box = draw_box;
-  style_class->draw_check = draw_check;
-  style_class->draw_option = draw_option;
-  style_class->draw_tab = draw_tab;
-  style_class->draw_flat_box = draw_flat_box;
-  style_class->draw_expander = draw_expander;
-  style_class->draw_extension = draw_extension;
-  style_class->draw_box_gap = draw_box_gap;
-  style_class->draw_shadow = draw_shadow;
-  style_class->draw_hline = draw_hline;
-  style_class->draw_vline = draw_vline;
-  style_class->draw_handle = draw_handle;
-  style_class->draw_resize_grip = draw_resize_grip;
-  style_class->draw_slider = draw_slider;
+    GtkStyleClass *style_class = GTK_STYLE_CLASS (klass);
+
+    parent_class = g_type_class_peek_parent (klass);
+
+    style_class->init_from_rc = msw_style_init_from_rc;
+    style_class->draw_arrow = draw_arrow;
+    style_class->draw_box = draw_box;
+    style_class->draw_check = draw_check;
+    style_class->draw_option = draw_option;
+    style_class->draw_tab = draw_tab;
+    style_class->draw_flat_box = draw_flat_box;
+    style_class->draw_expander = draw_expander;
+    style_class->draw_extension = draw_extension;
+    style_class->draw_box_gap = draw_box_gap;
+    style_class->draw_shadow = draw_shadow;
+    style_class->draw_hline = draw_hline;
+    style_class->draw_vline = draw_vline;
+    style_class->draw_handle = draw_handle;
+    style_class->draw_resize_grip = draw_resize_grip;
+    style_class->draw_slider = draw_slider;
 }
 
 GType msw_type_style = 0;
 
 void
-msw_style_register_type (GTypeModule *module)
+msw_style_register_type (GTypeModule * module)
 {
-  static const GTypeInfo object_info =
-  {
-    sizeof (MswStyleClass),
-    (GBaseInitFunc) NULL,
-    (GBaseFinalizeFunc) NULL,
-    (GClassInitFunc) msw_style_class_init,
-    NULL,           /* class_finalize */
-    NULL,           /* class_data */
-    sizeof (MswStyle),
-    0,              /* n_preallocs */
-    (GInstanceInitFunc) NULL,
-  };
-
-  msw_type_style = g_type_module_register_type (module,
-                                                  GTK_TYPE_STYLE,
-                                                  "MswStyle",
-                                                  &object_info, 0);
+    static const GTypeInfo object_info = {
+       sizeof (MswStyleClass),
+       (GBaseInitFunc) NULL,
+       (GBaseFinalizeFunc) NULL,
+       (GClassInitFunc) msw_style_class_init,
+       NULL,                   /* class_finalize */
+       NULL,                   /* class_data */
+       sizeof (MswStyle),
+       0,                      /* n_preallocs */
+       (GInstanceInitFunc) NULL,
+    };
+
+    msw_type_style = g_type_module_register_type (module,
+                                                 GTK_TYPE_STYLE,
+                                                 "MswStyle",
+                                                 &object_info, 0);
 }
 
 void
 msw_style_init (void)
 {
-  xp_theme_init ();
-  msw_style_setup_system_settings ();
-  setup_msw_rc_style ();
+    xp_theme_init ();
+    msw_style_setup_system_settings ();
+    setup_msw_rc_style ();
 }
index 5eb846a8acbbde811cbe4063f7ca921e5968ea66..9301f4f8e21001f46d5ff7eb67172951d3a66683 100755 (executable)
-/* MS-Windows Engine (aka GTK-Wimp)\r
- *\r
- * Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com>\r
- * Includes code adapted from redmond95 by Owen Taylor, and\r
- * gtk-nativewin by Evan Martin\r
- *\r
- * This library is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU Library General Public\r
- * License as published by the Free Software Foundation; either\r
- * version 2 of the License, or (at your option) any later version.\r
- *\r
- * This library is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
- * Library General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU Library General Public\r
- * License along with this library; if not, write to the\r
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r
- * Boston, MA 02111-1307, USA.\r
- */\r
-\r
-#include <windows.h>\r
-\r
-#include <gmodule.h>\r
-\r
-#include "gtk/gtk.h"\r
-\r
-#include "msw_style.h"\r
-#include "msw_rc_style.h"\r
-#include "xp_theme.h"\r
-\r
-#ifndef WM_THEMECHANGED\r
-#define WM_THEMECHANGED 0x031A /* winxp only */\r
-#endif\r
-\r
-static GModule * this_module = NULL;\r
-static void (*msw_rc_reset_styles) (GtkSettings * settings) = NULL;\r
-\r
-static GdkFilterReturn\r
-global_filter_func (void     *xevent,\r
-                   GdkEvent *event,\r
-                   gpointer  data)\r
-{\r
-  MSG *msg = (MSG *) xevent;\r
-\r
-  switch (msg->message)\r
-    {\r
-      /* catch theme changes */\r
-    case WM_THEMECHANGED:\r
-    case WM_SYSCOLORCHANGE:\r
-\r
-      if(msw_rc_reset_styles != NULL) {\r
-               xp_theme_reset ();\r
-               msw_style_init ();\r
-\r
-               /* force all gtkwidgets to redraw */\r
-               (*msw_rc_reset_styles) (gtk_settings_get_default());\r
-         }\r
-\r
-      return GDK_FILTER_REMOVE;\r
-\r
-    case WM_SETTINGCHANGE:\r
-      /* catch cursor blink, etc... changes */\r
-      msw_style_setup_system_settings ();\r
-      return GDK_FILTER_REMOVE;\r
-\r
-    default:\r
-      return GDK_FILTER_CONTINUE;\r
-    }\r
-}\r
-\r
-G_MODULE_EXPORT void\r
-theme_init (GTypeModule *module)\r
-{\r
-  msw_rc_style_register_type (module);\r
-  msw_style_register_type (module);\r
-\r
-  /* this craziness is required because only gtk 2.4.x and later have\r
-     gtk_rc_reset_styles(). But we want to be able to run acceptly well\r
-     on any GTK 2.x.x platform. */\r
-  if(gtk_check_version(2,4,0) == NULL) {\r
-    this_module = g_module_open(NULL, 0);\r
-\r
-    if(this_module)\r
-      g_module_symbol (this_module, "gtk_rc_reset_styles",\r
-                      (gpointer *)(&msw_rc_reset_styles));\r
-  }\r
-\r
-  msw_style_init ();\r
-  gdk_window_add_filter (NULL, global_filter_func, NULL);\r
-}\r
-\r
-G_MODULE_EXPORT void\r
-theme_exit (void)\r
-{\r
-  gdk_window_remove_filter (NULL, global_filter_func, NULL);\r
-\r
-  if(this_module) {\r
-    g_module_close(this_module);\r
-    this_module = NULL;\r
-  }\r
-}\r
-\r
-G_MODULE_EXPORT GtkRcStyle *\r
-theme_create_rc_style (void)\r
-{\r
-  return g_object_new (MSW_TYPE_RC_STYLE, NULL);\r
-}\r
-\r
-/* The following function will be called by GTK+ when the module\r
- * is loaded and checks to see if we are compatible with the\r
- * version of GTK+ that loads us.\r
- */\r
-G_MODULE_EXPORT const gchar*\r
-g_module_check_init (GModule *module)\r
-{\r
-  return gtk_check_version (2,0,0);\r
-}\r
+/* MS-Windows Engine (aka GTK-Wimp)
+ *
+ * Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com>
+ * Includes code adapted from redmond95 by Owen Taylor, and
+ * gtk-nativewin by Evan Martin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <windows.h>
+
+#include <gmodule.h>
+
+#include "gtk/gtk.h"
+
+#include "msw_style.h"
+#include "msw_rc_style.h"
+#include "xp_theme.h"
+
+#ifndef WM_THEMECHANGED
+#define WM_THEMECHANGED 0x031A /* winxp only */
+#endif
+
+static GModule *this_module = NULL;
+static void (*msw_rc_reset_styles) (GtkSettings * settings) = NULL;
+
+static GdkFilterReturn
+global_filter_func (void *xevent, GdkEvent * event, gpointer data)
+{
+    MSG *msg = (MSG *) xevent;
+
+    switch (msg->message)
+       {
+           /* catch theme changes */
+       case WM_THEMECHANGED:
+       case WM_SYSCOLORCHANGE:
+
+           if (msw_rc_reset_styles != NULL)
+               {
+                   xp_theme_reset ();
+                   msw_style_init ();
+
+                   /* force all gtkwidgets to redraw */
+                   (*msw_rc_reset_styles) (gtk_settings_get_default ());
+               }
+
+           return GDK_FILTER_REMOVE;
+
+       case WM_SETTINGCHANGE:
+           /* catch cursor blink, etc... changes */
+           msw_style_setup_system_settings ();
+           return GDK_FILTER_REMOVE;
+
+       default:
+           return GDK_FILTER_CONTINUE;
+       }
+}
+
+G_MODULE_EXPORT void
+theme_init (GTypeModule * module)
+{
+    msw_rc_style_register_type (module);
+    msw_style_register_type (module);
+
+    /* this craziness is required because only gtk 2.4.x and later have
+       gtk_rc_reset_styles(). But we want to be able to run acceptly well on
+       any GTK 2.x.x platform. */
+    if (gtk_check_version (2, 4, 0) == NULL)
+       {
+           this_module = g_module_open (NULL, 0);
+
+           if (this_module)
+               g_module_symbol (this_module, "gtk_rc_reset_styles",
+                                (gpointer *) (&msw_rc_reset_styles));
+       }
+
+    msw_style_init ();
+    gdk_window_add_filter (NULL, global_filter_func, NULL);
+}
+
+G_MODULE_EXPORT void
+theme_exit (void)
+{
+    gdk_window_remove_filter (NULL, global_filter_func, NULL);
+
+    if (this_module)
+       {
+           g_module_close (this_module);
+           this_module = NULL;
+       }
+}
+
+G_MODULE_EXPORT GtkRcStyle *
+theme_create_rc_style (void)
+{
+    return g_object_new (MSW_TYPE_RC_STYLE, NULL);
+}
+
+/* The following function will be called by GTK+ when the module
+ * is loaded and checks to see if we are compatible with the
+ * version of GTK+ that loads us.
+ */
+G_MODULE_EXPORT const gchar *
+g_module_check_init (GModule * module)
+{
+    return gtk_check_version (2, 0, 0);
+}
index 0d1c74402435547ceaabf62babbe9ccaa934e02a..7d2d6483b3a1d39529a0519194a0251379379c9a 100755 (executable)
@@ -42,6 +42,7 @@
 #endif
 
 #ifndef TMT_CAPTIONFONT
+
 /* These aren't in mingw's "w32api" headers, nor in the Platform SDK
  * headers.
  */
 
 #define TRS_NORMAL 1
 
-static const LPCWSTR class_descriptors[] =
-{
-  L"Scrollbar", /* XP_THEME_CLASS_SCROLLBAR */
-  L"Button",    /* XP_THEME_CLASS_BUTTON */
-  L"Header",    /* XP_THEME_CLASS_HEADER */
-  L"ComboBox",  /* XP_THEME_CLASS_COMBOBOX */
-  L"Tab",       /* XP_THEME_CLASS_TAB */
-  L"Edit",      /* XP_THEME_CLASS_EDIT */
-  L"TreeView",  /* XP_THEME_CLASS_TREEVIEW */
-  L"Spin",      /* XP_THEME_CLASS_SPIN */
-  L"Progress",  /* XP_THEME_CLASS_PROGRESS */
-  L"Tooltip",   /* XP_THEME_CLASS_TOOLTIP */
-  L"Rebar",     /* XP_THEME_CLASS_REBAR */
-  L"Toolbar",   /* XP_THEME_CLASS_TOOLBAR */
-  L"Globals",   /* XP_THEME_CLASS_GLOBALS */
-  L"Menu",      /* XP_THEME_CLASS_MENU */
-  L"Window",    /* XP_THEME_CLASS_WINDOW */
-  L"Status",    /* XP_THEME_CLASS_STATUS */
-  L"Trackbar"   /* XP_THEME_CLASS_TRACKBAR */
+static const LPCWSTR class_descriptors[] = {
+    L"Scrollbar",              /* XP_THEME_CLASS_SCROLLBAR */
+    L"Button",                 /* XP_THEME_CLASS_BUTTON */
+    L"Header",                 /* XP_THEME_CLASS_HEADER */
+    L"ComboBox",               /* XP_THEME_CLASS_COMBOBOX */
+    L"Tab",                    /* XP_THEME_CLASS_TAB */
+    L"Edit",                   /* XP_THEME_CLASS_EDIT */
+    L"TreeView",               /* XP_THEME_CLASS_TREEVIEW */
+    L"Spin",                   /* XP_THEME_CLASS_SPIN */
+    L"Progress",               /* XP_THEME_CLASS_PROGRESS */
+    L"Tooltip",                        /* XP_THEME_CLASS_TOOLTIP */
+    L"Rebar",                  /* XP_THEME_CLASS_REBAR */
+    L"Toolbar",                        /* XP_THEME_CLASS_TOOLBAR */
+    L"Globals",                        /* XP_THEME_CLASS_GLOBALS */
+    L"Menu",                   /* XP_THEME_CLASS_MENU */
+    L"Window",                 /* XP_THEME_CLASS_WINDOW */
+    L"Status",                 /* XP_THEME_CLASS_STATUS */
+    L"Trackbar"                        /* XP_THEME_CLASS_TRACKBAR */
 };
 
-static const short element_part_map[]=
-{
-  BP_CHECKBOX,
-  BP_CHECKBOX,
-  BP_PUSHBUTTON,
-  HP_HEADERITEM,
-  CP_DROPDOWNBUTTON,
-  TABP_BODY,
-  TABP_TABITEM,
-  TABP_TABITEMLEFTEDGE,
-  TABP_PANE,
-  SBP_THUMBBTNHORZ,
-  SBP_THUMBBTNVERT,
-  SBP_ARROWBTN,
-  SBP_ARROWBTN,
-  SBP_ARROWBTN,
-  SBP_ARROWBTN,
-  SBP_GRIPPERHORZ,
-  SBP_GRIPPERVERT,
-  SBP_LOWERTRACKHORZ,
-  SBP_LOWERTRACKVERT,
-  EP_EDITTEXT,
-  BP_PUSHBUTTON,
-  SPNP_UP,
-  SPNP_DOWN,
-  BP_RADIOBUTTON,
-  BP_RADIOBUTTON,
-  TVP_GLYPH,
-  TVP_GLYPH,
-  PP_CHUNK,
-  PP_CHUNKVERT,
-  PP_BAR,
-  PP_BARVERT,
-  TTP_STANDARD,
-  0 /*RP_BAND*/,
-  RP_GRIPPER,
-  RP_GRIPPERVERT,
-  RP_CHEVRON,
-  TP_BUTTON,
-  MP_MENUITEM,
-  MP_SEPARATOR,
-  SP_GRIPPER,
-  SP_PANE,
-  GP_LINEHORZ,
-  GP_LINEVERT,
-  TP_SEPARATOR,
-  TP_SEPARATORVERT,
-  TKP_TRACK,
-  TKP_TRACKVERT,
-  TKP_THUMB,
-  TKP_THUMBVERT,
-  TKP_TICS,
-  TKP_TICSVERT
+static const short element_part_map[] = {
+    BP_CHECKBOX,
+    BP_CHECKBOX,
+    BP_PUSHBUTTON,
+    HP_HEADERITEM,
+    CP_DROPDOWNBUTTON,
+    TABP_BODY,
+    TABP_TABITEM,
+    TABP_TABITEMLEFTEDGE,
+    TABP_PANE,
+    SBP_THUMBBTNHORZ,
+    SBP_THUMBBTNVERT,
+    SBP_ARROWBTN,
+    SBP_ARROWBTN,
+    SBP_ARROWBTN,
+    SBP_ARROWBTN,
+    SBP_GRIPPERHORZ,
+    SBP_GRIPPERVERT,
+    SBP_LOWERTRACKHORZ,
+    SBP_LOWERTRACKVERT,
+    EP_EDITTEXT,
+    BP_PUSHBUTTON,
+    SPNP_UP,
+    SPNP_DOWN,
+    BP_RADIOBUTTON,
+    BP_RADIOBUTTON,
+    TVP_GLYPH,
+    TVP_GLYPH,
+    PP_CHUNK,
+    PP_CHUNKVERT,
+    PP_BAR,
+    PP_BARVERT,
+    TTP_STANDARD,
+    0 /* RP_BAND */ ,
+    RP_GRIPPER,
+    RP_GRIPPERVERT,
+    RP_CHEVRON,
+    TP_BUTTON,
+    MP_MENUITEM,
+    MP_SEPARATOR,
+    SP_GRIPPER,
+    SP_PANE,
+    GP_LINEHORZ,
+    GP_LINEVERT,
+    TP_SEPARATOR,
+    TP_SEPARATORVERT,
+    TKP_TRACK,
+    TKP_TRACKVERT,
+    TKP_THUMB,
+    TKP_THUMBVERT,
+    TKP_TICS,
+    TKP_TICSVERT
 };
 
 static HINSTANCE uxtheme_dll = NULL;
 static HTHEME open_themes[XP_THEME_CLASS__SIZEOF];
 
-typedef HRESULT (FAR PASCAL *GetThemeSysFontFunc)
-     (HTHEME hTheme, int iFontID, OUT LOGFONT *plf);
-typedef int (FAR PASCAL *GetThemeSysSizeFunc)
-       (HTHEME hTheme, int iSizeId);
-typedef COLORREF (FAR PASCAL *GetThemeSysColorFunc)(HTHEME hTheme, int iColorID);
-typedef HTHEME (FAR PASCAL *OpenThemeDataFunc)
-     (HWND hwnd, LPCWSTR pszClassList);
-typedef HRESULT (FAR PASCAL *CloseThemeDataFunc)(HTHEME theme);
-typedef HRESULT (FAR PASCAL *DrawThemeBackgroundFunc)
-     (HTHEME hTheme, HDC hdc, int iPartId, int iStateId,
-      const RECT *pRect, const RECT *pClipRect);
-typedef HRESULT (FAR PASCAL *EnableThemeDialogTextureFunc)(HWND hwnd, DWORD dwFlags);
-typedef BOOL (FAR PASCAL *IsThemeActiveFunc)(VOID);
-typedef BOOL (FAR PASCAL *IsAppThemedFunc)(VOID);
-typedef BOOL (FAR PASCAL *IsThemeBackgroundPartiallyTransparentFunc)(HTHEME hTheme, int iPartId, int iStateId);
-typedef HRESULT (FAR PASCAL *DrawThemeParentBackgroundFunc)(HWND hwnd, HDC hdc, RECT *prc);
+typedef HRESULT (FAR PASCAL * GetThemeSysFontFunc)
+    (HTHEME hTheme, int iFontID, OUT LOGFONT * plf);
+typedef int (FAR PASCAL * GetThemeSysSizeFunc) (HTHEME hTheme, int iSizeId);
+typedef COLORREF (FAR PASCAL * GetThemeSysColorFunc) (HTHEME hTheme,
+                                                     int iColorID);
+typedef HTHEME (FAR PASCAL * OpenThemeDataFunc) (HWND hwnd,
+                                                LPCWSTR pszClassList);
+typedef HRESULT (FAR PASCAL * CloseThemeDataFunc) (HTHEME theme);
+typedef HRESULT (FAR PASCAL * DrawThemeBackgroundFunc)
+    (HTHEME hTheme, HDC hdc, int iPartId, int iStateId,
+     const RECT * pRect, const RECT * pClipRect);
+typedef HRESULT (FAR PASCAL * EnableThemeDialogTextureFunc) (HWND hwnd,
+                                                            DWORD dwFlags);
+typedef BOOL (FAR PASCAL * IsThemeActiveFunc) (VOID);
+typedef BOOL (FAR PASCAL * IsAppThemedFunc) (VOID);
+typedef BOOL (FAR PASCAL *
+             IsThemeBackgroundPartiallyTransparentFunc) (HTHEME hTheme,
+                                                         int iPartId,
+                                                         int iStateId);
+typedef HRESULT (FAR PASCAL * DrawThemeParentBackgroundFunc) (HWND hwnd,
+                                                             HDC hdc,
+                                                             RECT * prc);
 
 static GetThemeSysFontFunc get_theme_sys_font_func = NULL;
 static GetThemeSysColorFunc get_theme_sys_color_func = NULL;
@@ -185,704 +190,746 @@ static DrawThemeBackgroundFunc draw_theme_background_func = NULL;
 static EnableThemeDialogTextureFunc enable_theme_dialog_texture_func = NULL;
 static IsThemeActiveFunc is_theme_active_func = NULL;
 static IsAppThemedFunc is_app_themed_func = NULL;
-static IsThemeBackgroundPartiallyTransparentFunc is_theme_partially_transparent_func = NULL;
+static IsThemeBackgroundPartiallyTransparentFunc
+    is_theme_partially_transparent_func = NULL;
 static DrawThemeParentBackgroundFunc draw_theme_parent_background_func = NULL;
 
 static void
 xp_theme_close_open_handles (void)
 {
-  int i;
-
-  for (i=0; i < XP_THEME_CLASS__SIZEOF; i++)
-    {
-      if (open_themes[i])
-        {
-          close_theme_data_func (open_themes[i]);
-          open_themes[i] = NULL;
+    int i;
+
+    for (i = 0; i < XP_THEME_CLASS__SIZEOF; i++)
+       {
+           if (open_themes[i])
+               {
+                   close_theme_data_func (open_themes[i]);
+                   open_themes[i] = NULL;
+               }
        }
-    }
 }
 
 void
 xp_theme_init (void)
 {
-  if (uxtheme_dll)
-    return;
-
-  memset(open_themes, 0, sizeof(open_themes));
-
-  uxtheme_dll = LoadLibrary("uxtheme.dll");
-  if (!uxtheme_dll)
-         return;
-
-  is_app_themed_func = (IsAppThemedFunc) GetProcAddress(uxtheme_dll, "IsAppThemed");
-
-  if(is_app_themed_func) {
-         is_theme_active_func = (IsThemeActiveFunc) GetProcAddress(uxtheme_dll, "IsThemeActive");
-         open_theme_data_func = (OpenThemeDataFunc) GetProcAddress(uxtheme_dll, "OpenThemeData");
-         close_theme_data_func = (CloseThemeDataFunc) GetProcAddress(uxtheme_dll, "CloseThemeData");
-         draw_theme_background_func = (DrawThemeBackgroundFunc) GetProcAddress(uxtheme_dll, "DrawThemeBackground");
-         enable_theme_dialog_texture_func = (EnableThemeDialogTextureFunc) GetProcAddress(uxtheme_dll, "EnableThemeDialogTexture");
-         get_theme_sys_font_func = (GetThemeSysFontFunc) GetProcAddress(uxtheme_dll, "GetThemeSysFont");
-         get_theme_sys_color_func = (GetThemeSysColorFunc) GetProcAddress(uxtheme_dll, "GetThemeSysColor");
-         get_theme_sys_metric_func = (GetThemeSysSizeFunc) GetProcAddress(uxtheme_dll, "GetThemeSysSize");
-         is_theme_partially_transparent_func = (IsThemeBackgroundPartiallyTransparentFunc) GetProcAddress(uxtheme_dll, "IsThemeBackgroundPartiallyTransparent");
-         draw_theme_parent_background_func = (DrawThemeParentBackgroundFunc) GetProcAddress(uxtheme_dll, "DrawThemeParentBackground");
-  }
+    if (uxtheme_dll)
+       return;
+
+    memset (open_themes, 0, sizeof (open_themes));
+
+    uxtheme_dll = LoadLibrary ("uxtheme.dll");
+    if (!uxtheme_dll)
+       return;
+
+    is_app_themed_func =
+       (IsAppThemedFunc) GetProcAddress (uxtheme_dll, "IsAppThemed");
+
+    if (is_app_themed_func)
+       {
+           is_theme_active_func =
+               (IsThemeActiveFunc) GetProcAddress (uxtheme_dll,
+                                                   "IsThemeActive");
+           open_theme_data_func =
+               (OpenThemeDataFunc) GetProcAddress (uxtheme_dll,
+                                                   "OpenThemeData");
+           close_theme_data_func =
+               (CloseThemeDataFunc) GetProcAddress (uxtheme_dll,
+                                                    "CloseThemeData");
+           draw_theme_background_func =
+               (DrawThemeBackgroundFunc) GetProcAddress (uxtheme_dll,
+                                                         "DrawThemeBackground");
+           enable_theme_dialog_texture_func =
+               (EnableThemeDialogTextureFunc) GetProcAddress (uxtheme_dll,
+                                                              "EnableThemeDialogTexture");
+           get_theme_sys_font_func =
+               (GetThemeSysFontFunc) GetProcAddress (uxtheme_dll,
+                                                     "GetThemeSysFont");
+           get_theme_sys_color_func =
+               (GetThemeSysColorFunc) GetProcAddress (uxtheme_dll,
+                                                      "GetThemeSysColor");
+           get_theme_sys_metric_func =
+               (GetThemeSysSizeFunc) GetProcAddress (uxtheme_dll,
+                                                     "GetThemeSysSize");
+           is_theme_partially_transparent_func =
+               (IsThemeBackgroundPartiallyTransparentFunc)
+               GetProcAddress (uxtheme_dll,
+                               "IsThemeBackgroundPartiallyTransparent");
+           draw_theme_parent_background_func =
+               (DrawThemeParentBackgroundFunc) GetProcAddress (uxtheme_dll,
+                                                               "DrawThemeParentBackground");
+       }
 }
 
 void
 xp_theme_reset (void)
 {
-  xp_theme_close_open_handles ();
+    xp_theme_close_open_handles ();
 }
 
 void
 xp_theme_exit (void)
 {
-  if (! uxtheme_dll)
-    return;
-
-  xp_theme_close_open_handles ();
-
-  FreeLibrary (uxtheme_dll);
-  uxtheme_dll = NULL;
-
-  is_app_themed_func = NULL;
-  is_theme_active_func = NULL;
-  open_theme_data_func = NULL;
-  close_theme_data_func = NULL;
-  draw_theme_background_func = NULL;
-  enable_theme_dialog_texture_func = NULL;
-  get_theme_sys_font_func = NULL;
-  get_theme_sys_color_func = NULL;
-  get_theme_sys_metric_func = NULL;
-  is_theme_partially_transparent_func = NULL;
-  draw_theme_parent_background_func = NULL;
+    if (!uxtheme_dll)
+       return;
+
+    xp_theme_close_open_handles ();
+
+    FreeLibrary (uxtheme_dll);
+    uxtheme_dll = NULL;
+
+    is_app_themed_func = NULL;
+    is_theme_active_func = NULL;
+    open_theme_data_func = NULL;
+    close_theme_data_func = NULL;
+    draw_theme_background_func = NULL;
+    enable_theme_dialog_texture_func = NULL;
+    get_theme_sys_font_func = NULL;
+    get_theme_sys_color_func = NULL;
+    get_theme_sys_metric_func = NULL;
+    is_theme_partially_transparent_func = NULL;
+    draw_theme_parent_background_func = NULL;
 }
 
 static HTHEME
 xp_theme_get_handle_by_class (XpThemeClass klazz)
 {
-  if (!open_themes[klazz] && open_theme_data_func)
-    {
-      open_themes[klazz] = open_theme_data_func(NULL, class_descriptors[klazz]);
-    }
-  return open_themes[klazz];
+    if (!open_themes[klazz] && open_theme_data_func)
+       {
+           open_themes[klazz] =
+               open_theme_data_func (NULL, class_descriptors[klazz]);
+       }
+    return open_themes[klazz];
 }
 
 static HTHEME
 xp_theme_get_handle_by_element (XpThemeElement element)
 {
-  HTHEME ret = NULL;
-  XpThemeClass klazz = XP_THEME_CLASS__SIZEOF;
-
-  switch(element)
-    {
-    case XP_THEME_ELEMENT_TOOLTIP:
-      klazz = XP_THEME_CLASS_TOOLTIP;
-      break;
-
-    case XP_THEME_ELEMENT_REBAR:
-    case XP_THEME_ELEMENT_REBAR_GRIPPER_H:
-    case XP_THEME_ELEMENT_REBAR_GRIPPER_V:
-    case XP_THEME_ELEMENT_REBAR_CHEVRON:
-      klazz = XP_THEME_CLASS_REBAR;
-      break;
-
-    case XP_THEME_ELEMENT_SCALE_TROUGH_H:
-    case XP_THEME_ELEMENT_SCALE_TROUGH_V:
-    case XP_THEME_ELEMENT_SCALE_SLIDER_H:
-    case XP_THEME_ELEMENT_SCALE_SLIDER_V:
-    case XP_THEME_ELEMENT_SCALE_TICS_H:
-    case XP_THEME_ELEMENT_SCALE_TICS_V:
-               klazz = XP_THEME_CLASS_TRACKBAR;
-       break;
-
-    case XP_THEME_ELEMENT_STATUS_GRIPPER:
-    case XP_THEME_ELEMENT_STATUS_PANE:
-      klazz = XP_THEME_CLASS_STATUS;
-      break;
+    HTHEME ret = NULL;
+    XpThemeClass klazz = XP_THEME_CLASS__SIZEOF;
+
+    switch (element)
+       {
+       case XP_THEME_ELEMENT_TOOLTIP:
+           klazz = XP_THEME_CLASS_TOOLTIP;
+           break;
+
+       case XP_THEME_ELEMENT_REBAR:
+       case XP_THEME_ELEMENT_REBAR_GRIPPER_H:
+       case XP_THEME_ELEMENT_REBAR_GRIPPER_V:
+       case XP_THEME_ELEMENT_REBAR_CHEVRON:
+           klazz = XP_THEME_CLASS_REBAR;
+           break;
+
+       case XP_THEME_ELEMENT_SCALE_TROUGH_H:
+       case XP_THEME_ELEMENT_SCALE_TROUGH_V:
+       case XP_THEME_ELEMENT_SCALE_SLIDER_H:
+       case XP_THEME_ELEMENT_SCALE_SLIDER_V:
+       case XP_THEME_ELEMENT_SCALE_TICS_H:
+       case XP_THEME_ELEMENT_SCALE_TICS_V:
+           klazz = XP_THEME_CLASS_TRACKBAR;
+           break;
+
+       case XP_THEME_ELEMENT_STATUS_GRIPPER:
+       case XP_THEME_ELEMENT_STATUS_PANE:
+           klazz = XP_THEME_CLASS_STATUS;
+           break;
 
        case XP_THEME_ELEMENT_TOOLBAR_BUTTON:
        case XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_H:
-    case XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_V:
-      klazz = XP_THEME_CLASS_TOOLBAR;
-      break;
-
-    case XP_THEME_ELEMENT_MENU_ITEM:
-    case XP_THEME_ELEMENT_MENU_SEPARATOR:
-      klazz = XP_THEME_CLASS_MENU;
-      break;
-
-    case XP_THEME_ELEMENT_PRESSED_CHECKBOX:
-    case XP_THEME_ELEMENT_CHECKBOX:
-    case XP_THEME_ELEMENT_BUTTON:
-    case XP_THEME_ELEMENT_DEFAULT_BUTTON:
-    case XP_THEME_ELEMENT_PRESSED_RADIO_BUTTON:
-    case XP_THEME_ELEMENT_RADIO_BUTTON:
-      klazz = XP_THEME_CLASS_BUTTON;
-      break;
-
-    case XP_THEME_ELEMENT_LIST_HEADER:
-      klazz = XP_THEME_CLASS_HEADER;
-      break;
-
-    case XP_THEME_ELEMENT_COMBOBUTTON:
-      klazz = XP_THEME_CLASS_COMBOBOX;
-      break;
-
-    case XP_THEME_ELEMENT_BODY:
-    case XP_THEME_ELEMENT_TAB_ITEM:
-    case XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE:
-    case XP_THEME_ELEMENT_TAB_PANE:
-      klazz = XP_THEME_CLASS_TAB;
-      break;
-
-    case XP_THEME_ELEMENT_SCROLLBAR_V:
-    case XP_THEME_ELEMENT_SCROLLBAR_H:
-    case XP_THEME_ELEMENT_ARROW_UP:
-    case XP_THEME_ELEMENT_ARROW_DOWN:
-    case XP_THEME_ELEMENT_ARROW_LEFT:
-    case XP_THEME_ELEMENT_ARROW_RIGHT:
-    case XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_V:
-    case XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_H:
-    case XP_THEME_ELEMENT_TROUGH_V:
-    case XP_THEME_ELEMENT_TROUGH_H:
-      klazz = XP_THEME_CLASS_SCROLLBAR;
-      break;
-
-    case XP_THEME_ELEMENT_EDIT_TEXT:
-      klazz = XP_THEME_CLASS_EDIT;
-      break;
-
-    case XP_THEME_ELEMENT_SPIN_BUTTON_UP:
-    case XP_THEME_ELEMENT_SPIN_BUTTON_DOWN:
-      klazz = XP_THEME_CLASS_SPIN;
-      break;
-
-    case XP_THEME_ELEMENT_PROGRESS_BAR_H:
-    case XP_THEME_ELEMENT_PROGRESS_BAR_V:
-    case XP_THEME_ELEMENT_PROGRESS_TROUGH_H:
-    case XP_THEME_ELEMENT_PROGRESS_TROUGH_V:
-      klazz = XP_THEME_CLASS_PROGRESS;
-      break;
-
-    case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_OPENED:
-    case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_CLOSED:
-      klazz = XP_THEME_CLASS_TREEVIEW;
-      break;
+       case XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_V:
+           klazz = XP_THEME_CLASS_TOOLBAR;
+           break;
+
+       case XP_THEME_ELEMENT_MENU_ITEM:
+       case XP_THEME_ELEMENT_MENU_SEPARATOR:
+           klazz = XP_THEME_CLASS_MENU;
+           break;
+
+       case XP_THEME_ELEMENT_PRESSED_CHECKBOX:
+       case XP_THEME_ELEMENT_CHECKBOX:
+       case XP_THEME_ELEMENT_BUTTON:
+       case XP_THEME_ELEMENT_DEFAULT_BUTTON:
+       case XP_THEME_ELEMENT_PRESSED_RADIO_BUTTON:
+       case XP_THEME_ELEMENT_RADIO_BUTTON:
+           klazz = XP_THEME_CLASS_BUTTON;
+           break;
+
+       case XP_THEME_ELEMENT_LIST_HEADER:
+           klazz = XP_THEME_CLASS_HEADER;
+           break;
+
+       case XP_THEME_ELEMENT_COMBOBUTTON:
+           klazz = XP_THEME_CLASS_COMBOBOX;
+           break;
+
+       case XP_THEME_ELEMENT_BODY:
+       case XP_THEME_ELEMENT_TAB_ITEM:
+       case XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE:
+       case XP_THEME_ELEMENT_TAB_PANE:
+           klazz = XP_THEME_CLASS_TAB;
+           break;
+
+       case XP_THEME_ELEMENT_SCROLLBAR_V:
+       case XP_THEME_ELEMENT_SCROLLBAR_H:
+       case XP_THEME_ELEMENT_ARROW_UP:
+       case XP_THEME_ELEMENT_ARROW_DOWN:
+       case XP_THEME_ELEMENT_ARROW_LEFT:
+       case XP_THEME_ELEMENT_ARROW_RIGHT:
+       case XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_V:
+       case XP_THEME_ELEMENT_SCROLLBAR_GRIPPER_H:
+       case XP_THEME_ELEMENT_TROUGH_V:
+       case XP_THEME_ELEMENT_TROUGH_H:
+           klazz = XP_THEME_CLASS_SCROLLBAR;
+           break;
+
+       case XP_THEME_ELEMENT_EDIT_TEXT:
+           klazz = XP_THEME_CLASS_EDIT;
+           break;
+
+       case XP_THEME_ELEMENT_SPIN_BUTTON_UP:
+       case XP_THEME_ELEMENT_SPIN_BUTTON_DOWN:
+           klazz = XP_THEME_CLASS_SPIN;
+           break;
+
+       case XP_THEME_ELEMENT_PROGRESS_BAR_H:
+       case XP_THEME_ELEMENT_PROGRESS_BAR_V:
+       case XP_THEME_ELEMENT_PROGRESS_TROUGH_H:
+       case XP_THEME_ELEMENT_PROGRESS_TROUGH_V:
+           klazz = XP_THEME_CLASS_PROGRESS;
+           break;
+
+       case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_OPENED:
+       case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_CLOSED:
+           klazz = XP_THEME_CLASS_TREEVIEW;
+           break;
 
        case XP_THEME_ELEMENT_LINE_H:
        case XP_THEME_ELEMENT_LINE_V:
-               klazz = XP_THEME_CLASS_GLOBALS;
-               break;
-
-    default:
-      break;
-    }
-
-  if (klazz != XP_THEME_CLASS__SIZEOF)
-    {
-      ret = xp_theme_get_handle_by_class (klazz);
-    }
-  return ret;
+           klazz = XP_THEME_CLASS_GLOBALS;
+           break;
+
+       default:
+           break;
+       }
+
+    if (klazz != XP_THEME_CLASS__SIZEOF)
+       {
+           ret = xp_theme_get_handle_by_class (klazz);
+       }
+    return ret;
 }
 
 static int
 xp_theme_map_gtk_state (XpThemeElement element, GtkStateType state)
 {
-  int ret = 0;
+    int ret = 0;
 
-  switch(element)
-    {
-    case XP_THEME_ELEMENT_TOOLTIP:
-      ret = TTSS_NORMAL;
-      break;
+    switch (element)
+       {
+       case XP_THEME_ELEMENT_TOOLTIP:
+           ret = TTSS_NORMAL;
+           break;
 
-    case XP_THEME_ELEMENT_REBAR:
-       ret = 0;
-       break;
+       case XP_THEME_ELEMENT_REBAR:
+           ret = 0;
+           break;
 
-    case XP_THEME_ELEMENT_REBAR_GRIPPER_H:
-    case XP_THEME_ELEMENT_REBAR_GRIPPER_V:
-      ret = 0;
-      break;
+       case XP_THEME_ELEMENT_REBAR_GRIPPER_H:
+       case XP_THEME_ELEMENT_REBAR_GRIPPER_V:
+           ret = 0;
+           break;
 
        case XP_THEME_ELEMENT_STATUS_GRIPPER:
        case XP_THEME_ELEMENT_STATUS_PANE:
-               ret = 1;
-               break;
+           ret = 1;
+           break;
 
-    case XP_THEME_ELEMENT_REBAR_CHEVRON:
-      switch (state)
-       {
-        case GTK_STATE_PRELIGHT:
-          ret =  CHEVS_HOT;
-          break;
-        case GTK_STATE_SELECTED:
-        case GTK_STATE_ACTIVE:
-          ret =  CHEVS_PRESSED;
-          break;
-        default:
-          ret =  CHEVS_NORMAL;
-       }
-      break;
+       case XP_THEME_ELEMENT_REBAR_CHEVRON:
+           switch (state)
+               {
+               case GTK_STATE_PRELIGHT:
+                   ret = CHEVS_HOT;
+                   break;
+               case GTK_STATE_SELECTED:
+               case GTK_STATE_ACTIVE:
+                   ret = CHEVS_PRESSED;
+                   break;
+               default:
+                   ret = CHEVS_NORMAL;
+               }
+           break;
 
        case XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_H:
-    case XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_V:
-               ret = TS_NORMAL;
-               break;
+       case XP_THEME_ELEMENT_TOOLBAR_SEPARATOR_V:
+           ret = TS_NORMAL;
+           break;
 
        case XP_THEME_ELEMENT_TOOLBAR_BUTTON:
-               switch (state)
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = TS_PRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = TS_HOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = TS_DISABLED;
+                   break;
+               default:
+                   ret = TS_NORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_TAB_PANE:
+           ret = 1;
+           break;
+
+       case XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE:
+       case XP_THEME_ELEMENT_TAB_ITEM:
+           switch (state)
+               {
+               case GTK_STATE_PRELIGHT:
+                   ret = TIS_HOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = TIS_DISABLED;
+                   break;
+               case GTK_STATE_SELECTED:
+               case GTK_STATE_ACTIVE:
+                   ret = TIS_NORMAL;
+                   break;
+               default:
+                   ret = TIS_SELECTED;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_EDIT_TEXT:
+           switch (state)
+               {
+               case GTK_STATE_PRELIGHT:
+                   ret = ETS_FOCUSED;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = ETS_READONLY;
+                   break;
+               case GTK_STATE_SELECTED:
+               case GTK_STATE_ACTIVE:
+               default:
+                   ret = ETS_NORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_TROUGH_H:
+       case XP_THEME_ELEMENT_TROUGH_V:
+           ret = SCRBS_NORMAL;
+           break;
+
+       case XP_THEME_ELEMENT_SCROLLBAR_H:
+       case XP_THEME_ELEMENT_SCROLLBAR_V:
+           switch (state)
+               {
+               case GTK_STATE_SELECTED:
+               case GTK_STATE_ACTIVE:
+                   ret = SCRBS_PRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = SCRBS_HOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = SCRBS_DISABLED;
+                   break;
+               default:
+                   ret = SCRBS_NORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_ARROW_DOWN:
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = ABS_DOWNPRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = ABS_DOWNHOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = ABS_DOWNDISABLED;
+                   break;
+               default:
+                   ret = ABS_DOWNNORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_ARROW_UP:
+           switch (state)
                {
-        case GTK_STATE_ACTIVE:
-          ret =  TS_PRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  TS_HOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  TS_DISABLED;
-          break;
-        default:
-          ret =  TS_NORMAL;
+               case GTK_STATE_ACTIVE:
+                   ret = ABS_UPPRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = ABS_UPHOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = ABS_UPDISABLED;
+                   break;
+               default:
+                   ret = ABS_UPNORMAL;
                }
-               break;
-
-    case XP_THEME_ELEMENT_TAB_PANE:
-      ret = 1;
-      break;
-
-    case XP_THEME_ELEMENT_TAB_ITEM_LEFT_EDGE:
-    case XP_THEME_ELEMENT_TAB_ITEM:
-      switch(state)
-        {
-        case GTK_STATE_PRELIGHT:
-          ret =  TIS_HOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  TIS_DISABLED;
-          break;
-        case GTK_STATE_SELECTED:
-        case GTK_STATE_ACTIVE:
-          ret =  TIS_NORMAL;
-          break;
-        default:
-          ret =  TIS_SELECTED;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_EDIT_TEXT:
-      switch(state)
-        {
-        case GTK_STATE_PRELIGHT:
-          ret =  ETS_FOCUSED;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  ETS_READONLY;
-          break;
-        case GTK_STATE_SELECTED:
-        case GTK_STATE_ACTIVE:
-        default:
-          ret =  ETS_NORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_TROUGH_H:
-    case XP_THEME_ELEMENT_TROUGH_V:
-               ret = SCRBS_NORMAL;
-               break;
-
-    case XP_THEME_ELEMENT_SCROLLBAR_H:
-    case XP_THEME_ELEMENT_SCROLLBAR_V:
-      switch(state)
-        {
-        case GTK_STATE_SELECTED:
-        case GTK_STATE_ACTIVE:
-          ret =  SCRBS_PRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  SCRBS_HOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  SCRBS_DISABLED;
-          break;
-        default:
-          ret =  SCRBS_NORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_ARROW_DOWN:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  ABS_DOWNPRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  ABS_DOWNHOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  ABS_DOWNDISABLED;
-          break;
-        default:
-          ret =  ABS_DOWNNORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_ARROW_UP:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  ABS_UPPRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  ABS_UPHOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  ABS_UPDISABLED;
-          break;
-        default:
-          ret =  ABS_UPNORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_ARROW_LEFT:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  ABS_LEFTPRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  ABS_LEFTHOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  ABS_LEFTDISABLED;
-          break;
-        default:
-          ret =  ABS_LEFTNORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_ARROW_RIGHT:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  ABS_RIGHTPRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  ABS_RIGHTHOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  ABS_RIGHTDISABLED;
-          break;
-        default:
-          ret =  ABS_RIGHTNORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_CHECKBOX:
-    case XP_THEME_ELEMENT_RADIO_BUTTON:
-      switch(state)
-        {
-        case GTK_STATE_SELECTED:
-          ret =  CBS_UNCHECKEDPRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  CBS_UNCHECKEDHOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  CBS_UNCHECKEDDISABLED;
-          break;
-        default:
-          ret =  CBS_UNCHECKEDNORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_PRESSED_CHECKBOX:
-    case XP_THEME_ELEMENT_PRESSED_RADIO_BUTTON:
-      switch(state)
-        {
-        case GTK_STATE_SELECTED:
-          ret =  CBS_CHECKEDPRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  CBS_CHECKEDHOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  CBS_CHECKEDDISABLED;
-          break;
-        default:
-          ret =  CBS_CHECKEDNORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_DEFAULT_BUTTON:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  PBS_PRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  PBS_HOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  PBS_DISABLED;
-          break;
-        default:
-          ret =  PBS_DEFAULTED;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_SPIN_BUTTON_DOWN:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  DNS_PRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  DNS_HOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  DNS_DISABLED;
-          break;
-        default:
-          ret =  DNS_NORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_SPIN_BUTTON_UP:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  UPS_PRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  UPS_HOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  UPS_DISABLED;
-          break;
-        default:
-          ret =  UPS_NORMAL;
-        }
-      break;
-
-    case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_OPENED:
-      ret = GLPS_OPENED;
-      break;
-
-    case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_CLOSED:
-      ret = GLPS_CLOSED;
-      break;
-
-    case XP_THEME_ELEMENT_PROGRESS_BAR_H:
-    case XP_THEME_ELEMENT_PROGRESS_BAR_V:
-    case XP_THEME_ELEMENT_PROGRESS_TROUGH_H:
-    case XP_THEME_ELEMENT_PROGRESS_TROUGH_V:
-      ret = 1;
-      break;
+           break;
+
+       case XP_THEME_ELEMENT_ARROW_LEFT:
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = ABS_LEFTPRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = ABS_LEFTHOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = ABS_LEFTDISABLED;
+                   break;
+               default:
+                   ret = ABS_LEFTNORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_ARROW_RIGHT:
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = ABS_RIGHTPRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = ABS_RIGHTHOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = ABS_RIGHTDISABLED;
+                   break;
+               default:
+                   ret = ABS_RIGHTNORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_CHECKBOX:
+       case XP_THEME_ELEMENT_RADIO_BUTTON:
+           switch (state)
+               {
+               case GTK_STATE_SELECTED:
+                   ret = CBS_UNCHECKEDPRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = CBS_UNCHECKEDHOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = CBS_UNCHECKEDDISABLED;
+                   break;
+               default:
+                   ret = CBS_UNCHECKEDNORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_PRESSED_CHECKBOX:
+       case XP_THEME_ELEMENT_PRESSED_RADIO_BUTTON:
+           switch (state)
+               {
+               case GTK_STATE_SELECTED:
+                   ret = CBS_CHECKEDPRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = CBS_CHECKEDHOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = CBS_CHECKEDDISABLED;
+                   break;
+               default:
+                   ret = CBS_CHECKEDNORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_DEFAULT_BUTTON:
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = PBS_PRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = PBS_HOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = PBS_DISABLED;
+                   break;
+               default:
+                   ret = PBS_DEFAULTED;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_SPIN_BUTTON_DOWN:
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = DNS_PRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = DNS_HOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = DNS_DISABLED;
+                   break;
+               default:
+                   ret = DNS_NORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_SPIN_BUTTON_UP:
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = UPS_PRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = UPS_HOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = UPS_DISABLED;
+                   break;
+               default:
+                   ret = UPS_NORMAL;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_OPENED:
+           ret = GLPS_OPENED;
+           break;
+
+       case XP_THEME_ELEMENT_TREEVIEW_EXPANDER_CLOSED:
+           ret = GLPS_CLOSED;
+           break;
+
+       case XP_THEME_ELEMENT_PROGRESS_BAR_H:
+       case XP_THEME_ELEMENT_PROGRESS_BAR_V:
+       case XP_THEME_ELEMENT_PROGRESS_TROUGH_H:
+       case XP_THEME_ELEMENT_PROGRESS_TROUGH_V:
+           ret = 1;
+           break;
 
        case XP_THEME_ELEMENT_MENU_ITEM:
        case XP_THEME_ELEMENT_MENU_SEPARATOR:
-               switch(state) {
-                       case GTK_STATE_SELECTED:
-                               ret = MS_SELECTED;
-                               break;
-                       case GTK_STATE_INSENSITIVE:
-                               ret = MS_DEMOTED;
-                               break;
-                       default:
-                               ret = MS_NORMAL;
+           switch (state)
+               {
+               case GTK_STATE_SELECTED:
+                   ret = MS_SELECTED;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = MS_DEMOTED;
+                   break;
+               default:
+                   ret = MS_NORMAL;
                }
-               break;
+           break;
 
        case XP_THEME_ELEMENT_LINE_H:
-               switch(state) {
-                       /* LHS_FLAT, LHS_RAISED, LHS_SUNKEN */
-                       ret = LHS_RAISED;
-                       break;
+           switch (state)
+               {
+                   /* LHS_FLAT, LHS_RAISED, LHS_SUNKEN */
+                   ret = LHS_RAISED;
+                   break;
                }
-               break;
+           break;
 
        case XP_THEME_ELEMENT_LINE_V:
-               switch(state) {
-                       /* LVS_FLAT, LVS_RAISED, LVS_SUNKEN */
-                       ret = LVS_RAISED;
-                       break;
+           switch (state)
+               {
+                   /* LVS_FLAT, LVS_RAISED, LVS_SUNKEN */
+                   ret = LVS_RAISED;
+                   break;
+               }
+           break;
+
+       case XP_THEME_ELEMENT_SCALE_TROUGH_H:
+       case XP_THEME_ELEMENT_SCALE_TROUGH_V:
+           ret = TRS_NORMAL;
+           break;
+
+       default:
+           switch (state)
+               {
+               case GTK_STATE_ACTIVE:
+                   ret = PBS_PRESSED;
+                   break;
+               case GTK_STATE_PRELIGHT:
+                   ret = PBS_HOT;
+                   break;
+               case GTK_STATE_INSENSITIVE:
+                   ret = PBS_DISABLED;
+                   break;
+               default:
+                   ret = PBS_NORMAL;
                }
-               break;
-
-    case XP_THEME_ELEMENT_SCALE_TROUGH_H:
-    case XP_THEME_ELEMENT_SCALE_TROUGH_V:
-               ret = TRS_NORMAL;
-       break;
-
-    default:
-      switch(state)
-        {
-        case GTK_STATE_ACTIVE:
-          ret =  PBS_PRESSED;
-          break;
-        case GTK_STATE_PRELIGHT:
-          ret =  PBS_HOT;
-          break;
-        case GTK_STATE_INSENSITIVE:
-          ret =  PBS_DISABLED;
-          break;
-        default:
-          ret =  PBS_NORMAL;
-        }
-    }
-  return ret;
+       }
+    return ret;
 }
 
 gboolean
-xp_theme_draw (GdkWindow *win, XpThemeElement element, GtkStyle *style,
-               int x, int y, int width, int height,
-               GtkStateType state_type, GdkRectangle *area)
+xp_theme_draw (GdkWindow * win, XpThemeElement element, GtkStyle * style,
+              int x, int y, int width, int height,
+              GtkStateType state_type, GdkRectangle * area)
 {
-  HTHEME theme;
-  RECT rect, clip, *pClip;
-  int xoff, yoff;
-  HDC dc;
-  GdkDrawable *drawable;
-  int part_state;
-
-  if (! xp_theme_is_drawable (element))
-    return FALSE;
+    HTHEME theme;
+    RECT rect, clip, *pClip;
+    int xoff, yoff;
+    HDC dc;
+    GdkDrawable *drawable;
+    int part_state;
 
-  theme = xp_theme_get_handle_by_element(element);
-  if (!theme)
-    return FALSE;
+    if (!xp_theme_is_drawable (element))
+       return FALSE;
 
-  /* FIXME: Recheck its function */
-  enable_theme_dialog_texture_func(GDK_WINDOW_HWND(win), ETDT_ENABLETAB);
-
-  if (!GDK_IS_WINDOW(win))
-    {
-      xoff = 0;
-      yoff = 0;
-      drawable = win;
-    }
-  else
-    {
-      gdk_window_get_internal_paint_info(win, &drawable, &xoff, &yoff);
-    }
-
-  rect.left = x - xoff;
-  rect.top = y - yoff;
-  rect.right = rect.left + width;
-  rect.bottom = rect.top + height;
-
-  if (area)
-    {
-      clip.left = area->x - xoff;
-      clip.top = area->y - yoff;
-      clip.right = clip.left + area->width;
-      clip.bottom = clip.top + area->height;
-
-      pClip = &clip;
-    }
-  else
-    {
-      pClip = NULL;
-    }
-
-  gdk_gc_set_clip_rectangle (style->dark_gc[state_type], NULL);
-  dc = gdk_win32_hdc_get(drawable, style->dark_gc[state_type], 0);
-  if (!dc)
-    return FALSE;
+    theme = xp_theme_get_handle_by_element (element);
+    if (!theme)
+       return FALSE;
+
+    /* FIXME: Recheck its function */
+    enable_theme_dialog_texture_func (GDK_WINDOW_HWND (win), ETDT_ENABLETAB);
+
+    if (!GDK_IS_WINDOW (win))
+       {
+           xoff = 0;
+           yoff = 0;
+           drawable = win;
+       }
+    else
+       {
+           gdk_window_get_internal_paint_info (win, &drawable, &xoff, &yoff);
+       }
 
-  part_state = xp_theme_map_gtk_state(element, state_type);
+    rect.left = x - xoff;
+    rect.top = y - yoff;
+    rect.right = rect.left + width;
+    rect.bottom = rect.top + height;
 
-  draw_theme_background_func(theme, dc, element_part_map[element], part_state, &rect, pClip);
-  gdk_win32_hdc_release(drawable, style->dark_gc[state_type], 0);
+    if (area)
+       {
+           clip.left = area->x - xoff;
+           clip.top = area->y - yoff;
+           clip.right = clip.left + area->width;
+           clip.bottom = clip.top + area->height;
+
+           pClip = &clip;
+       }
+    else
+       {
+           pClip = NULL;
+       }
+
+    gdk_gc_set_clip_rectangle (style->dark_gc[state_type], NULL);
+    dc = gdk_win32_hdc_get (drawable, style->dark_gc[state_type], 0);
+    if (!dc)
+       return FALSE;
+
+    part_state = xp_theme_map_gtk_state (element, state_type);
+
+    draw_theme_background_func (theme, dc, element_part_map[element],
+                               part_state, &rect, pClip);
+    gdk_win32_hdc_release (drawable, style->dark_gc[state_type], 0);
 
-  return TRUE;
+    return TRUE;
 }
 
 gboolean
 xp_theme_is_active (void)
 {
-  gboolean active = FALSE;
+    gboolean active = FALSE;
 
-  if (is_app_themed_func)
-  {
-         active = (*is_app_themed_func) ();
+    if (is_app_themed_func)
+       {
+           active = (*is_app_themed_func) ();
 
-         if (active && is_theme_active_func)
-           {
-             active = (*is_theme_active_func) ();
+           if (active && is_theme_active_func)
+               {
+                   active = (*is_theme_active_func) ();
                }
-  }
+       }
 
-  return active;
+    return active;
 }
 
 gboolean
 xp_theme_is_drawable (XpThemeElement element)
 {
- if (xp_theme_is_active ())
-  return (xp_theme_get_handle_by_element (element) != NULL);
   if (xp_theme_is_active ())
+       return (xp_theme_get_handle_by_element (element) != NULL);
 
-  return FALSE;
+    return FALSE;
 }
 
 gboolean
-xp_theme_get_system_font (XpThemeClass klazz, XpThemeFont fontId, OUT LOGFONT *lf)
+xp_theme_get_system_font (XpThemeClass klazz, XpThemeFont fontId,
+                         OUT LOGFONT * lf)
 {
-  if (xp_theme_is_active () && get_theme_sys_font_func != NULL)
-    {
-      HTHEME theme = xp_theme_get_handle_by_class(klazz);
-         int themeFont;
-
-      if (!theme)
-        return FALSE;
-
-      switch (fontId)
-        {
-        case XP_THEME_FONT_CAPTION:
-          themeFont = TMT_CAPTIONFONT; break;
-        case XP_THEME_FONT_MENU:
-          themeFont = TMT_MENUFONT; break;
-        case XP_THEME_FONT_STATUS:
-          themeFont = TMT_STATUSFONT; break;
-        case XP_THEME_FONT_MESSAGE:
-        default:
-          themeFont = TMT_MSGBOXFONT; break;
-        }
-      /* if theme is NULL, it will just return the GetSystemFont() value */
-      return ((*get_theme_sys_font_func)(theme, themeFont, lf) == S_OK);
-    }
-  return FALSE;
+    if (xp_theme_is_active () && get_theme_sys_font_func != NULL)
+       {
+           HTHEME theme = xp_theme_get_handle_by_class (klazz);
+           int themeFont;
+
+           if (!theme)
+               return FALSE;
+
+           switch (fontId)
+               {
+               case XP_THEME_FONT_CAPTION:
+                   themeFont = TMT_CAPTIONFONT;
+                   break;
+               case XP_THEME_FONT_MENU:
+                   themeFont = TMT_MENUFONT;
+                   break;
+               case XP_THEME_FONT_STATUS:
+                   themeFont = TMT_STATUSFONT;
+                   break;
+               case XP_THEME_FONT_MESSAGE:
+               default:
+                   themeFont = TMT_MSGBOXFONT;
+                   break;
+               }
+           /* if theme is NULL, it will just return the GetSystemFont()
+              value */
+           return ((*get_theme_sys_font_func) (theme, themeFont, lf) ==
+                   S_OK);
+       }
+
+    return FALSE;
 }
 
 gboolean
-xp_theme_get_system_color (XpThemeClass klazz, int colorId, OUT DWORD * pColor)
+xp_theme_get_system_color (XpThemeClass klazz, int colorId,
+                          OUT DWORD * pColor)
 {
-  if (xp_theme_is_active () && get_theme_sys_color_func != NULL)
-    {
-      HTHEME theme = xp_theme_get_handle_by_class(klazz);
-
-      /* if theme is NULL, it will just return the GetSystemColor() value */
-      *pColor = (*get_theme_sys_color_func)(theme, colorId);
-      return TRUE;
-    }
-  return FALSE;
+    if (xp_theme_is_active () && get_theme_sys_color_func != NULL)
+       {
+           HTHEME theme = xp_theme_get_handle_by_class (klazz);
+
+           /* if theme is NULL, it will just return the GetSystemColor()
+              value */
+           *pColor = (*get_theme_sys_color_func) (theme, colorId);
+           return TRUE;
+       }
+
+    return FALSE;
 }
 
 gboolean
-xp_theme_get_system_metric (XpThemeClass klazz, int metricId, OUT int * pVal)
+xp_theme_get_system_metric (XpThemeClass klazz, int metricId, OUT int *pVal)
 {
-  if (xp_theme_is_active () && get_theme_sys_metric_func != NULL)
-    {
-      HTHEME theme = xp_theme_get_handle_by_class(klazz);
-
-      /* if theme is NULL, it will just return the GetSystemMetrics() value */
-      *pVal = (*get_theme_sys_metric_func)(theme, metricId);
-      return TRUE;
-    }
-  return FALSE;
+    if (xp_theme_is_active () && get_theme_sys_metric_func != NULL)
+       {
+           HTHEME theme = xp_theme_get_handle_by_class (klazz);
+
+           /* if theme is NULL, it will just return the GetSystemMetrics()
+              value */
+           *pVal = (*get_theme_sys_metric_func) (theme, metricId);
+           return TRUE;
+       }
+
+    return FALSE;
 }